Ustawienie Django na MySQL
Chcę odejść trochę od PHP i nauczyć się Pythona. W celu tworzenia stron internetowych z Pythonem będę potrzebował frameworka do pomocy z szablonami i innymi rzeczami.
Mam serwer nieprodukcyjny, którego używam do testowania wszystkich rzeczy związanych z tworzeniem stron internetowych. Jest to stos LAMP Debiana 7.1, który uruchamia MariaDB zamiast wspólnego pakietu MySQL-server.
Wczoraj zainstalowałem Django i stworzyłem swój pierwszy projekt o nazwie firstweb. Nie zmieniłem żadnych ustawień jeszcze.
Oto mój pierwszy wielki kawałek zamieszania. W samouczku śledziłem gościa, który zainstalował Django, rozpoczął swój pierwszy projekt, zrestartował Apache, a Django po prostu działało od tego czasu. Przeszedł do swojej przeglądarki i bez problemów przeszedł do domyślnej strony Django.
Ja jednak muszę cd do folderu firstweb i uruchomić
python manage.py runserver myip:port
I działa. Nie ma sprawy. Ale zastanawiam się, czy to ma tak działać i czy będzie to powodować problemy w dół linii?
Mój drugie pytanie jest to, że chcę go skonfigurować tak, aby używał mojej bazy danych MySQL. I go into my settings.py pod /firstweb / firstweb i widzę silnik i nazwę, ale nie jestem pewien, co tu umieścić.
A następnie w obszarach USER, PASSWORD I HOST czy jest to moja baza danych i jej poświadczenia? Jeśli używam localhostczy mogę po prostu umieścić localhost w obszarze hosta?
10 answers
Obsługa MySQL jest prosta do dodania. W twoim słowniku DATABASES
będziesz miał taki wpis:
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ść korzystania z plików opcji MySQL , począwszy od Django 1.7. Możesz to osiągnąć ustawiając tablicę {[7] } w następujący sposób:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
Musisz również utworzyć plik /path/to/my.cnf
z podobnymi ustawieniami z góry
[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
Z tą nową metodą łączenia w Django 1.7, ważne jest, aby wiedzieć, że kolejność połączeń jest utworzony:
1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
Innymi słowy, jeśli ustawisz nazwę bazy danych w OPTIONS, będzie to miało pierwszeństwo przed nazwą, która nadpisze cokolwiek w pliku opcji MySQL.
Jeśli tylko testujesz swoją aplikację na lokalnym komputerze, możesz użyć
python manage.py runserver
Dodanie argumentu ip:port
pozwala maszynom innym niż twój dostęp do Twojej aplikacji deweloperskiej. Gdy już będziesz gotowy do wdrożenia aplikacji, polecam przyjrzeć się rozdział o wdrożeniu Django na djangobook
Domyślnym zestawem znaków Mysql często nie jest utf-8, dlatego pamiętaj, aby utworzyć bazę danych za pomocą tego sql:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
Jeśli używaszłącznika MySQL Oracle twoja linia ENGINE
powinna wyglądać tak:
'ENGINE': 'mysql.connector.django',
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-21 13:51:36
Do pierwszego uruchom poniższe polecenia, aby zainstalować zależności Pythona, w przeciwnym razie polecenie runserver Pythona spowoduje błąd.
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
Następnie skonfiguruj settings.py plik zdefiniowany przez # Andy i przy ostatnim wykonaniu:
python manage.py runserver
Baw się dobrze..!!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-29 13:56:22
Jak wszystko zostało powiedziane powyżej, możesz łatwo zainstalować xampp najpierw z https://www.apachefriends.org/download.html Następnie postępuj zgodnie z instrukcjami:
- Zainstaluj i uruchom xampp z http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, Następnie uruchom serwer WWW Apache i bazę danych MySQL z GUI. Możesz skonfigurować swój serwer WWW tak, jak chcesz, ale domyślnie serwer WWW znajduje się pod adresem
- From here you możesz zobaczyć swoje bazy danych i uzyskać do nich dostęp za pomocą bardzo przyjaznego GUI.
- Utwórz dowolną bazę danych, której chcesz użyć w swoim projekcie Django.
-
Edytuj swój
settings.py
Plik jak:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB_NAME', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '', }}
-
Zainstaluj następujące pakiety w virtualenv (jeśli używasz django na virtualenv, co jest bardziej preferowane):
Sudo apt-get install libmysqlclient-dev
Pip install MySQL-python
To jest to!! skonfigurowałeś Django z MySQL w bardzo łatwy sposób.
-
Teraz uruchom swój projekt Django:
Python manage.py migrate
Python manage.py runserver
http://localhost:80
i bazy danych pod adresem port 3306
, A PhpMyadmin pod adresem http://localhost/phpmyadmin/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-30 19:38:08
Jeśli używasz python3.x następnie uruchom polecenie
pip install mysqlclient
Następnie zmień setting.py jak
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-06 11:56:10
Właściwie, jest wiele problemów z różnymi środowiskami, wersjami Pythona, itd. Może być też konieczne zainstalowanie plików dev Pythona, więc aby "brute-force" instalacji, uruchomiłbym 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
Powinieneś być dobry, aby przejść z zaakceptowaną odpowiedzią. I może usunąć niepotrzebne pakiety, jeśli jest to dla Ciebie ważne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-04 19:50:50
Odpowiedź Andy ' ego pomaga, ale jeśli masz problem z ujawnieniem hasła do bazy danych w ustawieniu django, proponuję podążać za oficjalną konfiguracją django na połączeniu mysql: https://docs.djangoproject.com/en/1.7/ref/databases/
Przytoczony tutaj 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 zastąpić' HOST': '127.0.0.1' w ustawieniu, po prostu dodaj go w moim."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 silnika pamięci dla django, możesz chcieć go w swoim setting.py:
'OPTIONS': {
'init_command': 'SET storage_engine=INNODB',
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-29 04:13:55
Uruchom te polecenia
Sudo apt-get install python-dev python3-dev
Sudo apt-get install libmysqlclient-dev
Pip install MySQL-python
Pip install pymysql
Pip install 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',
}
}
Enjoy MySQL connection
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-21 13:30:56
Settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '*****',
'HOST': '***.***.***.***',
'PORT': '3306',
'OPTIONS': {
'autocommit': True,
},
}
}
Wtedy:
python manage.py migrate
Jeśli sukces wygeneruje te 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 u will mogą używać mysql.
To jest przykład pokazowy, test na Django w wersji 1.11.5: Django-pool-showcase
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 09:54:15
Najpierw musisz utworzyć bazę danych MySQL. Następnie przejdź do pliku settings.py
i edytuj słownik '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',
}
}
Oto kompletny przewodnik instalacji dla skonfigurowania Django do używania MySQL na virtualenv:
Http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 11:53:20
Wykonaj podane kroki, aby skonfigurować go do korzystania z bazy danych MySQL:
1) Install MySQL Database Connector :
sudo apt-get install libmysqlclient-dev
2) Install the mysqlclient library :
pip install mysqlclient
3) Install MySQL server, with the following command :
sudo apt-get install mysql-server
4) Create the Database :
i) Verify that the MySQL service is running:
systemctl status mysql.service
ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :
mysql -u db_user -p
iii) CREATE DATABASE db_name;
iv) Exit MySQL server, press CTRL + D.
5) Add the MySQL Database Connection to your Application:
i) Navigate to the settings.py file and replace the current DATABASES lines with the following:
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as sudo to edit the file and add the following information:
sudo vi /etc/mysql/my.cnf
database = db_name
user = db_user
password = db_password
default-character-set = utf8
6) Once the file has been edited, we need to restart MySQL for the changes to take effect :
systemctl daemon-reload
systemctl restart mysql
7) Test MySQL Connection to Application:
python manage.py runserver your-server-ip:8000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-05 15:55:12