2013-10-04 14 views
120

Chcę odejść od PHP i nauczyć się Pythona. Aby móc tworzyć strony internetowe za pomocą Pythona, potrzebuję ramy do pomocy przy szablonach i innych rzeczach.Ustawienie Django do używania MySQL

Mam serwer nieprodukcyjny, którego używam do testowania wszystkich rzeczy związanych z tworzeniem stron internetowych. Jest to stos Debiana 7.1 LAMP, który uruchamia MariaDB zamiast zwykłego pakietu MySQL-server.

Wczoraj zainstalowałem Django i stworzył mój pierwszy projekt o nazwie firstweb. Nie zmieniłem jeszcze żadnych ustawień.

Oto mój pierwszy duży zamęt. W samouczku poszedłem za facetem, który zainstalował Django, zacząłem swój pierwszy projekt, ponownie uruchomiłem Apache, a Django po prostu pracował od tej pory. Poszedł do przeglądarki i poszedł na domyślną stronę Django bez żadnych problemów.

mnie jednak muszę cd w moim folderze firstweb i uruchomić

python manage.py runserver myip:port 

I to działa. Nie ma problemu. Ale zastanawiam się, czy to powinno działać w ten sposób i czy spowoduje to problemy w dalszej linii?

Moje drugie pytanie jest to, że chcę go skonfigurować, aby korzystać z mojej bazy danych MySQL. Wchodzę do mojego pliku settings.py pod/firstweb/firstweb i widzę ENGINE i NAME, ale nie jestem pewien, co tu umieścić.

A następnie w obszarach USER, PASSWORD i HOST jest to moja baza danych i dane uwierzytelniające? Jeśli używam localhost mogę po prostu wstawić localhost w obszarze HOST?

+0

Uwaga: jako OD 01/2016 nie ma sterownik MySQL dla Pythona 3.5.x. Zobacz http://stackoverflow.com/questions/34456770/python-connector-for-django-1-9-and-python-3-5 Używaj tylko Pythona 3.4. Nadal możesz korzystać z Django 1.9 (najnowsze wydanie stabilne od 01/2016). –

Odpowiedz

213

MySQL support jest prosta do dodania. W słownika DATABASES, trzeba będzie wpis tak:

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', 
    } 
} 

masz również możliwość wykorzystania MySQL option files, od Django 1.7. Można tego dokonać poprzez ustawienie swoją tablicę DATABASES tak:

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

Należy również utworzyć plik /path/to/my.cnf z podobnymi ustawieniami z powyższym

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

Dzięki tej nowej metodzie łączenia w Django 1.7, to ważne jest, aby wiedzieć, kolejność połączeń założenia:

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

W othe r słów, jeśli ustawisz nazwę bazy danych w OPCJE, będzie to miało pierwszeństwo przed NAME, które przesłoniłoby wszystko w pliku opcji MySQL.


Jeśli tylko testowanie aplikacji na lokalnym komputerze, można użyć

python manage.py runserver 

Dodanie ip:port argumentu pozwala maszyn innych niż własne, aby uzyskać dostęp do aplikacji rozwoju.nie raz jesteś gotowy, aby wdrożyć aplikację, polecam przyjrzeniu rozdziale na Deploying Django na domyślny zestaw znaków djangobook

MySQL jest często UTF-8, więc upewnij się, aby utworzyć bazę danych przy użyciu tego sql:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin 

Jeśli używasz Oracle's MySQL connector linię ENGINE powinna wyglądać następująco:

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

do bardzo najpierw należy uruchomić następujące polecenia, aby zainstalować Pythona dependenc w przeciwnym razie komenda python runserver wyświetli błąd.

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

Następnie skonfigurować plik settings.py zdefiniowane przez #Andy iw ostatniej wykonać:

python manage.py runserver 

Baw .. !!

12

Jak wszystko powiedziane wyżej, można łatwo zainstalować XAMPP pierwszy od https://www.apachefriends.org/download.html Następnie postępuj zgodnie z instrukcjami jak:

  1. zainstalować i uruchomić xampp z http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, a następnie uruchomić Apache Web Server i MySQL bazy danych z GUI.
  2. można skonfigurować serwer WWW, jak chcesz, ale domyślnie jest serwer WWW i bazy danych w http://localhost:80 w port 3306 i phpMyAdmin na http://localhost/phpmyadmin/
  3. Stąd można zobaczyć baz danych i dostęp do nich za pomocą bardzo przyjazny interfejs.
  4. Utwórz dowolną bazę danych, której chcesz użyć w swoim projekcie Django.
  5. edytować plik jak settings.py:

    DATABASES = { 
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME', 
        'HOST': '127.0.0.1', 
        'PORT': '3306', 
        'USER': 'root', 
        'PASSWORD': '', 
    }} 
    
  6. zainstalować następujące pakiety w virtualenv (jeśli używasz Django na virtualenv, co jest bardziej korzystne):

    sudo apt-get install libmysqlclient-dev

    pip zainstalować MySQL-python

  7. to jest to !! Skonfigurowałeś Django z MySQL w bardzo łatwy sposób.

  8. Teraz uruchom projekt Django:

    python manage.py migrować

    python manage.py runserver

8

Faktycznie, istnieje wiele problemów z różnych środowisk, wersji Pythona, więc na. Można także zainstalować pliki dev python, tak aby „brute-force” the instalacji chciałbym uruchomić wszystkie z nich:

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

powinien być dobry, aby przejść z przyjętą odpowiedzi. I może usunąć niepotrzebne pakiety, jeśli jest to dla ciebie ważne.

3

odpowiedź Andy'ego pomaga, ale jeśli masz obawy dotyczące wystawiania hasła bazy danych w ustawieniach django, proponuję pójść django oficjalnego konfigurację na połączenia MySQL: https://docs.djangoproject.com/en/1.7/ref/databases/

tu cytowane jako:

# 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 

Aby HOST zastąpić „”: „127.0.0.1” w ustawieniach, wystarczy dodać go w my.cnf:

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

Inną opcją, która jest przydatna, jest ustawienie s Mechanizm sprawdzania dostępności dla django, możesz go chcieć w swoim ustawieniu.py:

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

Najpierw musisz utworzyć bazę danych MySQL. Następnie przejdź do settings.py pliku i edycji słownika 'DATABASES' z poświadczeniami MySQL:

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', 
} 
} 

Powyżej znajduje się pełna instrukcja instalacji do konfigurowania Django używać MySQL na virtualenv:

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

+0

Link już nie działa ...;) – cwhisperer

3

Run te polecenia:

sudo apt-get install python-dev python3-dev

sudo apt-get install libmysqlclient-dev

pip zainstalować MySQL-python

pip zainstalować pymysql

pip zainstalować mysqlclient

Następnie skonfiguruj settings.py jak

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

Ciesz połączenia mysql

9

Jeśli używasz python3.x następnie Uruchom poniżej polecenia

pip install mysqlclient 

Następnie zmień setting.py jak

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, 
    }, 
} 

}

następnie:

python manage.py migrate 

jeśli sukces będzie generować tezy tabele:

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 

i będzie można korzystać z mysql.

to przykład prezentacja, test na Django wersji 1.11.5: Django-pool-showcase

Powiązane problemy