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 MySQL DB

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 включает свой собственный.

Другие вопросы по тегам