Могу ли я использовать MySQL на Django (dev 1.6.x) с Python3.x?
Я использую Django dev (1.6.x) из git repo, и я хочу использовать MySQL, но в файле settings.py
невозможно настроить MySQL, потому что MySQL не поддерживается в python3 и Django, поэтому я использовал пакет pymysql на python3.x без каких-либо проблем, но в Django невозможно настроить это на settings.py
тоже.
Можно ли использовать mysql (или pymysql или?) в django с помощью python3?
Ответы
Ответ 1
pymysql для python 3 не является бэкэндом Django DB, однако есть данные о том, что некоторые работы были сделаны для переноса MySQL Backend на Python 3, совместимого с Django Python 3 MySQL поддерживает изменения.
Другие страницы показывают, что бэкэнд MySQL с Django 1.5 работает с Python 3:
Django MySQL работает на Python 3.2.2
Оболочка MySQL по умолчанию, доступная на Python 2.x(mysql-python), однако не поддерживает Python 3.
Я подозреваю, что пакет в MySQL Python 3 совместим, вы можете попробовать.
Также убедитесь, что вы используете Django с Python 3.2 или 3.3 или выше. Python 3.0 не поддерживается.
Если после этих проверок он по-прежнему не работает, отправьте настройки DATABASES в случае, если в нем что-то не так.
Кроме того, я не нашел ничего выше Django 1.5 в репозиториях Django, вы уверены, что это 1.6.x?
Ответ 2
Я также боролся с тем, чтобы заставить MySQL работать с Django 1.6 и Python 3.3; Единственное, что сработало, это перейти на PyMySQL. См. Мой пост о том, что здесь
Добавление ответа ниже
Моя среда: OSX 10.9, Python 3.3.3, Django 1.6.1, PyMySQL 0.6.1, MySQL Server 5.5 для Windows
Как это сделать:
-
Установите PyMySQL версии 0.6.1 (https://github.com/PyMySQL/PyMySQL/): вы можете установить его либо с помощью pip, то есть: pip install PyMySQL
, либо путем ручной загрузки пакет; на их веб-сайте есть хорошая документация о том, как это сделать.
-
Откройте приложение Django __ init __. py и вставьте следующие строки:
import pymysql
pymysql.install_as_MySQLdb()
-
Теперь откройте settings.py и убедитесь, что ваше свойство DATABASE выглядит следующим образом:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'dbuser',
'PASSWORD': 'dbpassword',
'HOST': 'dbhost',
'PORT': '3306'
}
}
-
Чтобы это, вы должны иметь возможность выполнить python manage.py syncdb
, чтобы инициализировать вашу БД MySQL; см. примерный вывод ниже:
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
...
...
Creating table socialaccount_socialtoken
You just installed Django auth system, which means you don't have any superusers defined.
...
Ответ 3
Я долго ждал поддержки mysql с django и python 3.x, и, наконец, есть несколько официальных совместимых движков, которые позволяют вам это делать.
http://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html
Я создал virtualenv с помощью python 3 и смог использовать конкретные настройки базы данных в приведенной выше ссылке.
DATABASES = {
'default': {
'NAME': 'mydatabase',
'ENGINE': 'mysql.connector.django',
'USER': 'mydbuser',
'PASSWORD': 'mydbpassword',
'OPTIONS': {
'autocommit': True,
},
}
}
Вырезать и вставить модели из учебника по опросам Django и "python manage syncdb".
Больше тестирования, чтобы проверить, поддерживает ли весь ORM этот соединитель.
Моя полная запись здесь:
http://bunwich.blogspot.ca/2014/02/finally-mysql-connector-that-works-with.html
Ответ 4
Я исправил эту проблему следующим образом:
Согласно документации Django 1.8 и 1.9, mysqlclient является рекомендуемым драйвером:
MySQLdb - это родной драйвер, который уже более десяти лет разрабатывался и поддерживался Энди Дустманом.
mysqlclient - это fork MySQLdb, который особенно поддерживает Python 3 и может использоваться как замена для MySQLdb. На момент написания этой статьи это рекомендуемый вариант для использования MySQL с Django.
Контекст MySQL/Python - это чистый драйвер Python от Oracle, который не требует клиентской библиотеки MySQL или любых модулей Python вне стандартной библиотеки.
Итак, я установил mysqlclient
sudo pip install mysqlclient
Конфигурирование базы данных в settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydjango',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306'
}
}
Но когда я использую ./manage.py syncdb
для тестирования, я получил сообщение об ошибке:
_mysql.so not found
Чтобы исправить это, добавьте
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
to ~/.bashrc
Затем запустите:
source ~/.bashrc
Теперь он должен быть исправлен.