如何使Django使用不受支持的MySQL驱动程序,如gevent MySQL或Concurrence';谁是MySQL驱动程序?

如何使Django使用不受支持的MySQL驱动程序,如gevent MySQL或Concurrence';谁是MySQL驱动程序?,mysql,django,asynchronous,django-database,gevent,Mysql,Django,Asynchronous,Django Database,Gevent,我对在Concurrence或gevent等异步框架上运行Django感兴趣。这两个框架都有自己的异步MySQL驱动程序 问题是Django只正式支持MySQLdb。我需要做什么才能使Django与gevent或Concurrence附带的MySQL驱动程序一起工作 有没有我可以遵循的循序渐进的指南?这是一项重大任务吗 谢谢。为@traviscline的建议欢呼三声。他的建议是建立在他的基础上的。只需要一个 更改设置文件中的导入,以及monkeypatch(),因为pymysql是纯python

我对在Concurrence或gevent等异步框架上运行Django感兴趣。这两个框架都有自己的异步MySQL驱动程序

问题是Django只正式支持MySQLdb。我需要做什么才能使Django与gevent或Concurrence附带的MySQL驱动程序一起工作

有没有我可以遵循的循序渐进的指南?这是一项重大任务吗


谢谢。

为@traviscline的建议欢呼三声。他的建议是建立在他的基础上的。只需要一个

更改设置文件中的导入,以及monkeypatch(),因为pymysql是纯python驱动程序

travis提到,他通过更改导入并运行pymysql、mysqldb和myconnpy的单元测试来测试兼容性


请注意,已经有了,但总体而言,这是一个优雅的、可维护的解决方案。当我在生产中运行时,我将进行更新

我成功地让pymysql与Django合作,完成了以下工作:

  • 注释掉base.py文件开头的try-except块,其中导入了MySQLdb
  • 将以下四行添加到base.py

  • 正如在发布的链接中提到的,转到base.py文件,在文件的相关部分找到replace
    MySQLdb
    with
    pymysql
    ,也就是说,不要费心更改错误消息(可以,但这取决于您)

  • 保存base.py,并从apt位置运行以下命令以查看服务器启动

    python manage.py runserver
    

  • 我得到一个
    Thing2Literal
    错误(看起来不像是在pymysql中实现的?)如果您使用的是足够新的mysqldb版本,这不是问题。此外,上面提到的bug 668664(在父进程终止时终止查询)在生产中对我来说从来都不是一个明显的问题。。但是,在我工作的时候,该站点每天没有看到超过几千个请求。这是在我花了大量精力试图让默认的mysql驱动程序在Python3.4和Django中工作之后实现的。谢谢我使用的是OSX 10.11,使用的是Mamp,这个解决方案适用于Python3.6和Django,假设gevent mysql的API与MySQLdb匹配,那么编写和使用一个非常简单的自定义数据库后端将非常简单。我知道其他人会感兴趣,所以请分享你是否/何时做这件事。我敢打赌,freenode上的gevent中的人一定会提供详细信息。是一个纯python MySQLdb api兼容的客户端库,Mozilla将其与Firefox同步服务器的gevent一起使用。您可以编写一个小型的定制db引擎(正如我前面提到的),或者简单地使用以下方法:在中修补PyMySQL。
    try:
        import pymysql as Database
    except ImportError:
        pass
    
    python manage.py runserver