Установка Django для использования MySQL
Я хочу немного уйти от PHP и изучить Python. Для того, чтобы сделать веб-разработку с помощью Python, мне понадобится структура, которая поможет в шаблонах и других вещах.
У меня есть непродуктивный сервер, который я использую для тестирования всех материалов для веб-разработки. Это стек LAMP Debian 7.1, который запускает MariaDB вместо обычного пакета MySQL-сервера.
Вчера я установил Django и создал свой первый проект под названием firstweb. Я еще не изменил настройки.
Вот моя первая большая путаница. В учебнике я последовал за парнем, который установил Django, начал свой первый проект, перезапустил Apache, и Django просто работал с тех пор. Он пошел в свой браузер и без проблем отправился на страницу по умолчанию Django.
Тем не менее, мне нужно записать cd в папку firstweb и запустить
python manage.py runserver myip:port
И это работает. Нет проблем. Но мне интересно, будет ли это работать так, и если это вызовет проблемы на линии?
Мой второй вопрос заключается в том, что я хочу его настроить, поэтому он использует мою базу данных MySQL. Я вхожу в мои settings.py под /firstweb/firstweb, и я вижу ДВИГАТЕЛЬ и ИМЯ, но я не уверен, что здесь поставить.
И тогда в областях USER, PASSWORD и HOST это моя база данных и ее учетные данные? Если я использую localhost, могу ли я просто поместить localhost в область HOST?
Ответы
Ответ 1
Поддержка 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, начиная с 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.
Другими словами, если вы зададите имя базы данных в OPTIONS, это будет иметь приоритет над NAME, что переопределит все в файле параметров MySQL.
Если вы просто тестируете свое приложение на локальном компьютере, вы можете использовать
python manage.py runserver
Добавление аргумента ip:port
позволяет другим компьютерам, кроме вашей, получить доступ к вашему приложению для разработки. Когда вы будете готовы развернуть свое приложение, я рекомендую взглянуть на главу Развертывание Django в djangobook
.Набор символов Mysql по умолчанию часто не utf-8, поэтому убедитесь, что создали свою базу данных, используя этот sql:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
Если вы используете коннектор Oracle MySQL, ваша строка ENGINE
должна выглядеть следующим образом:
'ENGINE': 'mysql.connector.django',
Обратите внимание, что сначала вам нужно установить mysql в вашей ОС.
brew install mysql (MacOS)
Кроме того, клиентский пакет mysql был изменен для python 3 (MySQL-Client
работает только для python 2)
pip3 install mysqlclient
Ответ 2
Прежде всего, запустите приведенные ниже команды для установки зависимостей на python, иначе команда python runningerver выведет ошибку.
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
Затем настройте файл settings.py, как определено в #Andy, и при последнем выполнении:
python manage.py runserver
Удачи..!!
Ответ 3
Как сказано выше, вы можете легко установить xampp сначала из https://www.apachefriends.org/download.html
Затем следуйте инструкциям как:
- Установите и запустите xampp с http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/, затем запустите Apache Web Server и базу данных MySQL из графического интерфейса.
- Вы можете настроить свой веб-сервер так, как хотите, но по умолчанию веб-сервер находится в
http://localhost:80
и базе данных port 3306
, а PhpMyadmin - http://localhost/phpmyadmin/
- Здесь вы можете увидеть свои базы данных и получить к ним доступ с помощью очень удобного графического интерфейса.
- Создайте любую базу данных, которую вы хотите использовать в проекте Django.
-
Измените файл settings.py
следующим образом:
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 install MySQL-python
-
Что это! вы настроили Django с MySQL очень простым способом.
-
Теперь запустите проект Django:
python manage.py migrate
python manage.py runningerver
Ответ 4
Если вы используете python3.x, то выполните команду ниже
pip install mysqlclient
Затем измените параметр .py, например
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
Ответ 5
На самом деле, есть много проблем с разными средами, версиями python и так далее. Вам также может потребоваться установить файлы файлы python, поэтому для "перебора" установки я бы выполнил все эти действия:
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
Вы должны быть добры, чтобы пойти с принятым ответом. И может удалить ненужные пакеты, если это важно для вас.
Ответ 6
Запустите эти команды
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install 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
Ответ 7
Ответ Andy помогает, но если у вас есть проблема с раскрытием пароля вашей базы данных в настройке django, я предлагаю следовать официальной конфигурации django при подключении mysql: 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
Чтобы заменить "HOST": "127.0.0.1" в настройке, просто добавьте его в my.cnf:
# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8
Еще один ВАРИАНТ, который полезен, заключается в том, чтобы установить механизм хранения для django, вы можете захотеть его в настройке .py:
'OPTIONS': {
'init_command': 'SET storage_engine=INNODB',
}
Ответ 8
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-pool-showcase
Ответ 9
Выполните данные шаги, чтобы настроить его на использование базы данных 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, lets 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
Ответ 10
Сначала вы должны создать базу данных MySQL. Затем перейдите в файл settings.py
и отредактируйте словарь '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/