Настройка Django для использования MySQL
Я хочу немного отойти от PHP и изучить Python. Для того, чтобы сделать веб-разработку С Python мне понадобится фреймворк, чтобы помочь с шаблонами и другими вещами.
У меня есть непроизводственный сервер, который я использую для тестирования всех материалов веб-разработки. Это стек лампы Debian 7.1, который запускает MariaDB вместо общего пакета MySQL-server.
вчера я установил Django и создал свой первый проект под названием firstweb. Я ничего не изменил. настройки пока нет.
вот мой первый большой кусок путаницы. В учебнике я следил за тем, как парень установил Django, начал свой первый проект, перезапустил Apache, и Django просто работал с тех пор. Он пошел в свой браузер и пошел на страницу Django по умолчанию без проблем.
меня однако, я должен компакт-диск в мою папку firstweb и запустить
python manage.py runserver myip:port
и это работает. Не проблема. Но мне интересно, должно ли это работать так, и если это вызовет проблемы вниз по линии?
мой второй вопрос я хочу настроить его так, чтобы он использовал мою базу данных MySQL. Я иду в свою ... settings.py под /firstweb / firstweb и я вижу двигатель и имя, но я не уверен, что поставить здесь.
а затем в области пользователя, пароля и хоста это моя база данных и ее учетные данные? Если я использую localhost в могу я просто поставить localhost в в принимающей области?
10 ответов
поддержка MySQL просто добавить. В DATABASES
словарь, у вас будет такая запись:
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',
}
}
у вас также есть возможность использовать MySQL option files, по состоянию на Django 1.7. Вы можете сделать это, установив свой DATABASES
массив вот так:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
Вам также необходимо создать /path/to/my.cnf
файл с аналогичными настройками сверху
[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
С этим новым методом подключения в Django 1.7, он важно знать порядок установления соединений:
1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
другими словами, если вы установите имя базы данных в параметрах, это будет иметь приоритет над именем, которое переопределит что-либо в файле опций MySQL.
если вы просто тестируете свое приложение на локальном компьютере, вы можете использовать
python manage.py runserver
добавлять ip:port
аргумент позволяет машинам, отличным от ваших, получить доступ к вашей разработке приложение. Как только вы будете готовы развернуть свое приложение, я рекомендую взглянуть на главу Развертывание Django на djangobook
набор символов Mysql по умолчанию часто не utf-8, поэтому обязательно создайте свою базу данных с помощью этого sql:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
если вы используете MySQL разъем Oracle код ENGINE
строка должна выглядеть так:
'ENGINE': 'mysql.connector.django',
к самому первому, пожалуйста, запустите приведенные ниже команды для установки зависимостей python, иначе команда python runserver выдаст ошибку.
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
затем настройте settings.py файл, определенный #Andy и при последнем выполнении:
python manage.py runserver
получать удовольствие..!!
как все сказано выше, вы можете легко установить xampp сначала изhttps://www.apachefriends.org/download.html Затем следуйте инструкциям, как:
- установить и запустить xampp из http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, затем запустите веб-сервер Apache и базу данных MySQL из GUI.
- вы можете настроить свой веб сервер как вы хотите, но по умолчанию веб-сервер находится на
http://localhost:80
и базы данныхport 3306
, и PhpMyadmin athttp://localhost/phpmyadmin/
- отсюда вы можете увидеть свои базы данных и получить к ним доступ с помощью очень дружественного GUI.
- создайте любую базу данных, которую вы хотите использовать в своем проекте Django.
-
редактировать как:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB_NAME', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '', }}
-
установите следующие пакеты в virtualenv (если вы используете django на virtualenv, что более предпочтительно):
sudo apt-get install libmysqlclient-dev
pip установить MySQL-python
вот именно!! вы настроили Django с MySQL очень простым способом.
-
теперь запустите проект Django:
python manage.py migrate
python manage.py runserver
Если вы используете python3.x затем выполните команду
pip install mysqlclient
затем изменить setting.py как
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
на самом деле существует много проблем с различными средами, версиями python и т. д. Вам также может потребоваться установить файлы python dev, поэтому для "грубой силы" установки я бы запустил все это:
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
вы должны быть хороши, чтобы пойти с принятым ответом. И можете удалить ненужные пакеты, если это важно для вас.
ответ Энди помогает, Но если у вас есть озабоченность по поводу разоблачения пароля базы данных в настройках django, я предлагаю следовать официальной конфигурации django на mysql connection:https://docs.djangoproject.com/en/1.7/ref/databases/
цитируется здесь как:
# 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
чтобы заменить "хост": "127.0.0.1" в настройках, просто добавьте его в мой.cnf:
# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8
другой вариант, который является полезным, чтобы установить двигатель хранения для django, вы можете захотеть это в твоей ... setting.py:
'OPTIONS': {
'init_command': 'SET storage_engine=INNODB',
}
выполните следующие команды
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip установить MySQL-python
pip установить pymysql
pip установить mysqlclient
затем настроить settings.py как
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456',
}
}
наслаждайтесь mysql connection
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '*****',
'HOST': '***.***.***.***',
'PORT': '3306',
'OPTIONS': {
'autocommit': True,
},
}
}
затем:
python manage.py migrate
если успех будет генерировать таблицы тезисы:
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
и u будет использовать mysql.
Это пример витрины, тест на Django версии 1.11.5: Django-бассейн-витрина
сначала необходимо создать базу данных MySQL. Тогда иди в редактировать 'DATABASES'
словарь с вашими учетными данными 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',
}
}
вот полное руководство по установке для настройки Django для использования MySQL на virtualenv:
http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/
выполните указанные шаги, чтобы настроить его для использования базы данных 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