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

2024-04-29 00:03:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用git repo中的Django dev(1.6.x),我想使用MySQL,但是在settings.py文件上无法设置MySQL,因为python3和Django中不支持MySQL,所以我在python3.x上使用了pymysql包,没有任何问题,但是在Django中也无法在settings.py上设置。

我可以使用mysql(或者pymysql或者?)在django和python3上?


Tags: 文件djangopydevgitsettingsmysqlrepo
3条回答

我一直在等待django和Python3.x对mysql的支持,终于有了一个官方兼容的引擎,让我们来实现这一点。

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

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

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

剪切并粘贴Django Poll教程中的模型,“python manage syncdb”起作用。

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

我在这里的完整记录: http://bunwich.blogspot.ca/2014/02/finally-mysql-connector-that-works-with.html

我还努力使MySQL与Django 1.6和Python 3.3一起工作;唯一有效的方法是切换到PyMySQL。看我在那上面的帖子here

在下面添加答案

我的环境:OSX 10.9、Python3.3.3、Django 1.6.1、PyMySQL0.6.1、Windows上的MySQLServer5.5

如何使其工作:

  1. 安装PyMySQL版本0.6.1(https://github.com/PyMySQL/PyMySQL/):您可以使用pip(即:pip install PyMySQL)或手动下载包来安装它;他们的网站上有一个很好的文档说明了如何安装。

  2. 打开Django应用程序\uu init\uuu.py并粘贴以下行:

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

    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.
    ...
    

python 3的pymysql不是Django DB后端,但是有证据表明,已经做了一些工作来移植MySQL后端,使其在Django Python 3 MySQL backend changes与python3兼容。

其他页面显示Django 1.5提供的MySQL后端与Python 3一起工作: Django MySQL Works on Python 3.2.2

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

还要确保使用Python 3.2或3.3或更高版本运行Django。不支持Python3.0。

如果在这些检查之后仍然不起作用,请张贴您的数据库设置,以防其中出现错误。

另外,我在Django回购协议中没有发现任何高于Django 1.5的东西,你确定是1.6.x吗?

相关问题 更多 >