Django

    xiaoxiao2021-11-30  73

    现状

    首先,Django@Python2.x 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。

    MySQL官方的方案

    首先据MySQL文档[3]说,自从MySQL Connector/Python 1.1.1 开始,引入了 mysql.connector.django ,可直接作为 Django 的数据库引擎使用,但是我试了1.1.2和1.1.3后发现,根本不是那么回事[4]。

    PyMySQL(It works)

    后来,发现了 PyMySQL[1] ,支持Python3 ,google后知道如何与 Django 结合使用[2],答案如下:

    首先,安装PyMySQL

    for Windows

      1 pip install PyMySQL

    for Fedora

      1 pip - python3 install PyMySQL

    然后,在 Django 站点的 __init__.py 文件中添加如下两行:

      1 2 3 import pymysql   pymysql . install_as_MySQLdb ( )

    最后是数据库的配置(在settings.py)

      1 2 3 4 5 6 7 8 9 10 11 12 13 DATABASES = {      'default' : {          'ENGINE' : 'django.db.backends.mysql' , #数据库引擎          'NAME' : 'test' ,                        #数据库名          'USER' : 'root' ,                        #用户名          'PASSWORD' : 'root' ,                    #密码          'HOST' : '' ,                            #数据库主机,默认为localhost          'PORT' : '' ,                            #数据库端口,MySQL默认为3306          'OPTIONS' : {              'autocommit' : True ,          } ,      } }

    然后同步数据库:

    for Windows

      1 python manage . py syncdb

    for Fedora

      1 python3 manage .py syncdb

    OK, It works!

    注:本人在 Windows 7 + MariaDB 5.5 + Django 1.6.0 + Python 3.3 的环境下试验成功。

    更新:在Fedora + MariaDB 5.5 + Django 1.6.0 + Python 3.3 下也测试成功。

    参考链接

    PyMySQL的官网:https://github.com/PyMySQL/PyMySQL/ Stack Overflow上关于此的一个问题:http://stackoverflow.com/questions/2636536/how-to-make-django-work-with-unsupported-mysql-drivers-such-as-gevent-mysql-or-c MySQL官方宣称支持Django:http://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html MySQL Connector/Python 1.1.3 在Django@Python3下无法工作:http://www.oschina.net/question/1415937_135990 MySQLdb官网(目前不支持Python3):http://sourceforge.net/projects/mysql-python/
    转载请注明原文地址: https://ju.6miu.com/read-679196.html

    最新回复(0)