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

ali*_*eza 39 python django python-3.x

我使用混帐回购协议的Django开发(1.6.x版),我想使用MySQL,但在settings.py文件无法安装的MySQL因为MySQL不python3和Django的支持,所以我用pymysql包上python3.x没有任何问题,但在Django中也无法设置它settings.py.

我可以使用与python3 Django的MySQL的(或pymysql或?)?

mor*_*_il 74

我也努力让MySQL与Django 1.6和Python 3.3一起工作; 唯一有效的方法是切换到PyMySQL.在这里看到我的帖子

添加以下答案

我的环境:Windows上的OSX 10.9,Python 3.3.3,Django 1.6.1,PyMySQL 0.6.1,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() 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,打开settings.py并确保您的DATABASE属性如下所示:

    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'mydb',
           'USER': 'dbuser',
           'PASSWORD': 'dbpassword',
           'HOST': 'dbhost',
           'PORT': '3306'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  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.
    ...
    
    Run Code Online (Sandbox Code Playgroud)


Ste*_*e K 7

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

其他页面显示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.不支持Python 3.0.

如果在这些检查后仍然无效,请发布您的DATABASES设置,以防出现问题.

另外,我在Django repos中找不到Django 1.5以上的任何东西,你确定它是1.6.x吗?


bun*_*ich 7

我一直在等待django和python 3.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,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

剪切并粘贴Django Poll Tutorial中的模型和'python manage syncdb'工作.

进行更多测试以查看整个ORM是否支持此连接器.

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


小智 6

我解决了这个问题:

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

MySQLdb是本地驱动程序,由Andy Dustman开发和支持了十多年.

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

MySQL Connector/Python是Oracle的纯Python驱动程序,不需要MySQL客户端库或标准库之外的任何Python模块.

所以,我安装了mysqlclient

sudo pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

在settings.py中配置数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydjango',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我./manage.py syncdb用于测试时,我收到一条错误消息:

_mysql.so not found
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请添加

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
Run Code Online (Sandbox Code Playgroud)

~/.bashrc

然后运行:

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

它现在应该修复.