Подтвердить что ты не робот

Могу ли я использовать 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?

4b9b3361

Ответ 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

Теперь он должен быть исправлен.