2013-10-04 5 views
120

Ich möchte weg von PHP ein wenig und lernen Python. Um Web-Entwicklung mit Python zu machen, brauche ich ein Framework, um mit Templating und anderen Dingen zu helfen.Einstellung von Django für die Verwendung von MySQL

Ich habe einen Nicht-Produktions-Server, den ich verwende, um alle Web-Entwicklungs-Sachen zu testen. Es ist ein Debian 7.1 LAMP-Stack, auf dem MariaDB statt des üblichen MySQL-Server-Pakets läuft.

Gestern habe ich Django installiert und mein erstes Projekt namens firstweb erstellt. Ich habe noch keine Einstellungen geändert.

Hier ist mein erstes großes Stück Verwirrung. In dem Tutorial folgte ich dem Typ der Django installierte, startete sein erstes Projekt, startete Apache neu und Django arbeitete von da an. Er ging zu seinem Browser und ging ohne Probleme auf die Django-Standardseite.

Me jedoch habe ich auf CD in meinen firstweb Ordner und

python manage.py runserver myip:port 

laufen und es funktioniert. Kein Problem. Aber ich frage mich, ob es so funktionieren soll und ob das Probleme auf der ganzen Linie verursachen wird?

Meine zweite Frage ist, dass ich es einrichten möchte, so dass es meine MySQL-Datenbank verwendet. Ich gehe in meine settings.py unter/firstweb/firstweb und ich sehe ENGINE und NAME, aber ich bin mir nicht sicher, was ich hier setzen soll.

Und dann in den Bereichen USER, PASSWORD und HOST ist dies meine Datenbank und ihre Anmeldeinformationen? Wenn ich localhost verwende, kann ich localhost in den HOST-Bereich setzen?

+0

Hinweis: als od 01/2016 gibt es keinen MySQL-Treiber für Python 3.5.x Siehe http://stackoverflow.com/questions/34456770/python-connector-for-django-1-9-and-python-3-5 Also nur bis zu Python 3.4. Sie können immer noch Django 1.9 (letzte stabile Version vom 01/2016) verwenden. –

Antwort

213

MySQL support ist einfach hinzuzufügen. In Ihrem DATABASES Wörterbuch, werden Sie einen Eintrag wie folgt aus:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'DB_NAME', 
     'USER': 'DB_USER', 
     'PASSWORD': 'DB_PASSWORD', 
     'HOST': 'localhost', # Or an IP Address that your DB is hosted on 
     'PORT': '3306', 
    } 
} 

Sie haben auch die Möglichkeit der Verwendung von MySQL option files, wie von Django 1.7. Sie können dies erreichen, indem Sie Ihre DATABASES Array Einstellung wie folgt:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'OPTIONS': { 
      'read_default_file': '/path/to/my.cnf', 
     }, 
    } 
} 

Sie müssen auch über

[client] 
database = DB_NAME 
host = localhost 
user = DB_USER 
password = DB_PASSWORD 
default-character-set = utf8 

Mit diesem neuen Verfahren zum Verbinden in Django 1.7, die /path/to/my.cnf Datei mit ähnlichen Einstellungen erstellen ist wichtig, die Reihenfolge Verbindungen hergestellt wissen:

1. OPTIONS. 
2. NAME, USER, PASSWORD, HOST, PORT 
3. MySQL option files. 

In othe Wenn Sie den Namen der Datenbank in OPTIONS festlegen, hat dieser Vorrang vor NAME, der alles in einer MySQL-Optionsdatei überschreiben würde.


Wenn Sie gerade Ihre Anwendung auf Ihrem lokalen Rechner zu testen, können Sie

python manage.py runserver 

Hinzufügen des ip:port Argument verwenden können Maschinen andere als die eigene Ihre Entwicklungsanwendung zugreifen.Sobald Sie bereit sind, Ihre Anwendung bereitstellen, empfehle ich auf Deploying Django auf dem djangobook

Mysql Standardzeichensatz im Kapitel, einen Blick oft nicht utf-8, daher sicherstellen, dass Ihre Datenbank mit dieser SQL erstellen:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin 

Wenn Sie Oracle's MySQL connector Ihre ENGINE Linie verwenden sollte wie folgt aussehen:

'ENGINE': 'mysql.connector.django', 
20

zum ersten Befehle der unten bitte laufen python dependenc installieren Andernfalls wird der Python-runserver-Befehl einen Fehler auslösen.

sudo apt-get install libmysqlclient-dev 
sudo pip install MySQL-python 

dann die settings.py Datei konfigurieren, wie durch #Andy und im letzten auszuführen definiert:

python manage.py runserver 

Viel Spaß .. !!

12

Da alle oben genannten, können Sie leicht xampp installieren Sie zuerst von https://www.apachefriends.org/download.html folgen Sie den Anweisungen wie:

  1. Installieren und Ausführen von Xampp von http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, dann Apache Web Server und MySQL-Datenbank von der GUI starten.
  2. Sie können Ihren Web-Server so konfigurieren, wie Sie aber standardmäßig wollen Web-Server ist http://localhost:80 und Datenbank bei port 3306 und PhpMyadmin bei http://localhost/phpmyadmin/
  3. Von hier aus können Sie Ihre Datenbanken zugreifen und sie verwenden sehr freundlich GUI sehen.
  4. Erstellen Sie eine beliebige Datenbank, die Sie in Ihrem Django-Projekt verwenden möchten.
  5. Bearbeiten Sie Ihre settings.py Datei wie:

    DATABASES = { 
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME', 
        'HOST': '127.0.0.1', 
        'PORT': '3306', 
        'USER': 'root', 
        'PASSWORD': '', 
    }} 
    
  6. Installieren Sie die folgenden Pakete im virtualenv (wenn Sie django auf virtualenv verwenden, die mehr bevorzugt):

    sudo apt-get install libmysqlclient-dev

    pip installieren MySQL-python

  7. das ist es !! Sie haben Django sehr einfach mit MySQL konfiguriert.

  8. Jetzt ist Ihre Django-Projekt laufen:

    Python migrieren manage.py

    Python manage.py runserver

8

Tatsächlich gibt es viele Probleme mit verschiedenen Umgebungen, Python-Versionen, so auf. Möglicherweise müssen Sie auch Python dev Dateien, so zu ‚Brute-Force‘ die Installation installiert ich alle diese laufen würde:

sudo apt-get install python-dev python3-dev 
sudo apt-get install libmysqlclient-dev 
pip install MySQL-python 
pip install pymysql 
pip install mysqlclient 

Sie sollen mit der akzeptierten Antwort gut zu gehen. Und kann die unnötigen Pakete entfernen, wenn das für Sie wichtig ist.

3

Andy Antwort hilft, aber wenn Sie Interesse haben, auf Ihre Datenbank Passwort in Ihrer django Einstellung auszusetzen, schlage ich offizielle Konfiguration auf MySQL-Verbindung folgen django: https://docs.djangoproject.com/en/1.7/ref/databases/

Zitat hier:

# settings.py 
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'OPTIONS': { 
      'read_default_file': '/path/to/my.cnf', 
     }, 
    } 
} 


# my.cnf 
[client] 
database = NAME 
user = USER 
password = PASSWORD 
default-character-set = utf8 

zu ersetzen 'HOST': '127.0.0.1' in Einstellung, einfach fügen sie es in my.cnf:

# my.cnf 
[client] 
database = NAME 
host = HOST NAME or IP 
user = USER 
password = PASSWORD 
default-character-set = utf8 

Eine weitere Option, die nützlich ist, ist Ihr s einzustellen agerung Motor für django, können Sie es in Ihrem setting.py:

'OPTIONS': { 
    'init_command': 'SET storage_engine=INNODB', 
} 
0

Sie müssen zuerst eine MySQL-Datenbank erstellen. Dann gehen Sie zu settings.py Datei und bearbeiten Sie die 'DATABASES' Wörterbuch mit MySQL-Berechtigungsnachweise:

DATABASES = { 
'default': { 
'ENGINE': 'django.db.backends.mysql', 
'NAME': 'YOUR_DATABASE_NAME', 
'USER': 'YOUR_MYSQL_USER', 
'PASSWORD': 'YOUR_MYSQL_PASS', 
'HOST': 'localhost', # Or an IP that your DB is hosted on 
'PORT': '3306', 
} 
} 

Dies ist die komplette Installationsanleitung für Django Einrichten von MySQL zu verwenden, um auf einem virtualenv:

http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/

+0

Link funktioniert nicht mehr ...;) – cwhisperer

3

Run Diese Befehle

sudo apt-get installieren python-dev python3-dev

sudo apt-get libmysqlclient-dev

pip installieren MySQL-Python

pip installieren pymysql

installieren mysqlclient konfigurieren

Dann settings.py wie

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'django_db', 
     'HOST': '127.0.0.1', 
     'PORT': '3306', 
     'USER': 'root', 
     'PASSWORD': '123456', 
    } 
} 
pip installieren

Genießen Sie MySQL-Verbindung

9

Wenn Sie python3.x verwenden dann unter Befehl ausführen

pip install mysqlclient 

Dann setting.py wie ändern

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'DB', 
    'USER': 'username', 
    'PASSWORD': 'passwd', 
    } 
    } 
1

settings.py

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'django', 
    'USER': 'root', 
    'PASSWORD': '*****', 
    'HOST': '***.***.***.***', 
    'PORT': '3306', 
    'OPTIONS': { 
     'autocommit': True, 
    }, 
} 

}

dann:

python manage.py migrate 

wenn Erfolg Thesen Tabellen erzeugen:

auth_group 
auth_group_permissions 
auth_permission 
auth_user 
auth_user_groups 
auth_user_user_permissions 
django_admin_log 
django_content_type 
django_migrations 
django_session 

und u werden können mysql verwenden.

dies ist ein Musterbeispiel, Test auf Django Version 1.11.5: Django-pool-showcase

Verwandte Themen