MySQL, Connector/Python как движок Django?
Не могу найти ответ на этот вопрос даже после часов и часов поиска и переполнения стека поиска. Уверяю вас, я видел все ответы, которые можно было бы считать актуальными, и ни один из них не решил проблему, с которой я столкнулся. Без дальнейших церемоний -
В настоящее время в оболочке я могу сделать это:
Python 2.7.11+ (default, Apr 17 2016, 14:00:29)
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from distutils.sysconfig import get_python_lib
>>> print get_python_lib()
/usr/lib/python2.7/dist-packages
>>> import mysql.connector
>>> db = mysql.connector.connect(user='root', password='test123', host='127.0.0.1', database='mydb')
>>> db
<mysql.connector.connection.MySQLConnection object at 0x7fd3a80536d0>
проверяя, что у меня установлен этот модуль. Однако, когда я пытаюсь перейти в файл settings.py, чтобы установить DATABASE ENGINE, чтобы быть
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': 'test123',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
и попробуйте запустить мой сервер, я получаю сообщение об ошибке:
django.core.exceptions.ImproperlyConfigured: 'mysql.connector.django'
isn't an available database backend.
не уверен, как это исправить. Я на Django версии 1.9.7, версия Python показана в фрагменте кода выше
В чем разница между использованием "mysql.connector.django" и "django.db.backends.mysql"?
2 ответа
Вот мое успешное решение после однодневного поиска: сначала установите следующие пакеты
django==2.2.15
mysql-connector-python==8.0.23
django-mysql==3.9.0
Затем вы можете настроить в файле настроек
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': 'test123',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
В чем разница между использованием "mysql.connector.django" и "django.db.backends.mysql"?
Для начала первый метод рекомендуется, а второй - нет. Первый полностью поддерживается, но последнему нужна версия 1.1.x, и в документации по django также есть предостережение, что он может не полностью поддерживаться более поздними версиями django.
API базы данных Python описан в PEP 249. MySQL имеет три известных драйвера, которые реализуют этот API:
MySQLdb - это встроенный драйвер, который был разработан и поддерживается более десяти лет Энди Дастманом. mysqlclient - это форк MySQLdb, который особенно поддерживает Python 3 и может быть использован в качестве замены MySQLdb. На момент написания этой статьи это рекомендуемый вариант для использования MySQL с Django. MySQL Connector/Python - это чистый драйвер Python от Oracle, который не требует клиентской библиотеки MySQL или каких-либо модулей Python за пределами стандартной библиотеки. Все эти драйверы являются поточно-ориентированными и обеспечивают пул соединений. MySQLdb - единственный, который не поддерживает Python 3 в настоящее время.
В дополнение к драйверу API БД, Django нужен адаптер для доступа к драйверам базы данных из своего ORM. Django предоставляет адаптер для MySQLdb/mysqlclient, в то время как MySQL Connector/Python включает свой собственный.