Настройка Django для использования MySQL
Я хочу немного отойти от PHP и изучить Python. Для того, чтобы сделать веб-разработку С Python мне понадобится фреймворк, чтобы помочь с шаблоном и другими вещами.
У меня есть непроизводственный сервер, который я использую для тестирования всех материалов веб-разработки. Это стек лампы Debian 7.1, который запускает MariaDB вместо общего пакета MySQL-server.
вчера я установил Django и создал свой первый проект под названием firstweb. Я ничего не изменил настроек пока нет.
вот мой первый большой кусок путаницы. В учебнике я следил за тем, как парень установил Django, начал свой первый проект, перезапустил Apache, и с тех пор Django просто работал. Он зашел в свой браузер и без проблем перешел на страницу Django по умолчанию.
меня, однако, у меня есть на CD в папку 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 опции файлы, по состоянию на 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 из графического интерфейса.
- вы можете настроить свой веб сервер как вы хотите, но по умолчанию веб-сервер находится на
http://localhost:80
и базы данныхport 3306
, и PhpMyadmin вhttp://localhost/phpmyadmin/
- отсюда вы можете увидеть свои базы данных и получить к ним доступ с помощью очень дружественного графического интерфейса.
- создайте любую базу данных, которую вы хотите использовать в своем проекте 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 мигрировать
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
чтобы заменить 'HOST': '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 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 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-pool-showcase
сначала необходимо создать базу данных 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