我可以在Python3.x上使用Django(dev 1.6.x)上的MySQL吗?

我使用Django开发(1.6.x)从git回购,我想使用MySQL,但在settings.py文件无法安装MySQL,因为python3和Django不支持MySQL,所以我用pymysql包python3.x没有任何问题,但在Django无法在settings.pysettings.py

我可以在Django上使用mysql(或pymysql或?)与python3吗?

python 3的pymysql不是Django DB的后端,但是有证据表明,一些工作已经在Django Python 3的MySQL后端改变中将MySQL后端移植到Python 3兼容。

其他页面显示,Django 1.5提供的MySQL后端可以在Python 3.2.2上使用Python 3: Django MySQL Works

Python 2.x(mysql-python)提供的默认MySQL包装器不支持Python 3.我怀疑MySQL Python 3的包是兼容的,你可以试试看。

还要确保你运行的Python 3.2或3.3或更高版本的Django。 Python 3.0不支持。

如果在这些检查之后它仍然不起作用,请发布您的DATABASES设置以防万一出现问题。

此外,我没有发现Django 1.5以上的东西,你确定它是1.6.x?

我也努力使MySQL与Django 1.6和Python 3.3一起工作; 唯一的工作是切换到PyMySQL。 在这里看到我的post

在下面添加答案

我的环境:OSX 10.9,Python 3.3.3,Django 1.6.1,PyMySQL 0.6.1,Windows上的MySQL Server 5.5

如何使其工作:

  1. 安装PyMySQL版本0.6.1( https://github.com/PyMySQL/PyMySQL/ ):你可以使用pip安装它,例如: pip install PyMySQL或手动下载包; 在他们的网站上有一个很好的文档,介绍如何做到这一点。

  2. 打开你的Django App __init__.py并粘贴下面几行:

     import pymysql pymysql.install_as_MySQLdb() 
  3. 现在,打开settings.py并确保你的DATABASE属性如下所示:

     DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb', 'USER': 'dbuser', 'PASSWORD': 'dbpassword', 'HOST': 'dbhost', 'PORT': '3306' } } 
  4. 就这样,你应该可以执行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's auth system, which means you don't have any superusers defined. ... 

我一直在等待mysql支持django和python 3.x的年龄,终于有一个有点官方兼容的引擎,让你这样做。

http://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html

我使用python 3创build了一个virtualenv,并能够在上面的链接中使用数据库特定的设置。

 DATABASES = { 'default': { 'NAME': 'mydatabase', 'ENGINE': 'mysql.connector.django', 'USER': 'mydbuser', 'PASSWORD': 'mydbpassword', 'OPTIONS': { 'autocommit': True, }, } } 

从Django民意测验教程和“pythonpipe理syncdb”剪切和粘贴的模型工作。

更多的testing,看看整个ORM是否支持这个连接器。

我的全部写在这里: http : //bunwich.blogspot.ca/2014/02/finally-mysql-connector-that-works-with.html

我通过这个解决了这个问题:

根据Django 1.8和1.9的文档, mysqlclient是推荐的驱动程序 :

MySQLdb是Andy Dustman十多年来开发和支持的本地驱动程序。

mysqlclient是MySQLdb的一个分支,它特别支持Python 3,可以用作MySQLdb的一个插件替代品。 在撰写本文时,这是使用Django和MySQL的推荐select。

MySQL连接器/ Python是来自Oracle的纯Python驱动程序,不需要MySQL客户端库或标准库之外的任何Python模块。

所以,我通过安装mysqlclient

 sudo pip install mysqlclient 

在settings.py中configuration数据库

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydjango', 'USER': 'user', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306' } } 

但是当我使用./manage.py syncdb进行testing时,我收到一个错误:

 _mysql.so not found 

要解决这个问题,请添加

 export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 

~/.bashrc

然后运行:

 source ~/.bashrc 

现在应该修好了。