23

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

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

是否有我可以遵循的分步指南?这是一项重大事业吗?

谢谢。

4

2 回答 2

37

为@traviscline 建议使用pymysql欢呼三声。他的建议是基于Mozilla 的这篇文章。只需要对 manage.py 文件打一个简单的补丁

#!/usr/bin/env python
+try:
+    import pymysql
+    pymysql.install_as_MySQLdb()
+except ImportError:
+    pass 

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

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

请注意,已经有一些需要注意的细节示例——但总的来说,这是一个优雅、可维护的解决方案。当我在生产中运行时,我会更新!

于 2011-08-23T19:50:55.860 回答
-1

我成功地让 pymysql 与 Django 一起执行以下操作:

  1. 注释掉导入 MySQLdb的base.py文件开头的 try-except 块。
  2. 将以下四行添加到base.py

    try:
        import pymysql as Database
    except ImportError:
        pass
    
  3. 如egbutter发布的链接中所述,转到 base.py 文件并在文件的相关部分查找替换MySQLdbpymysql即不要费心更改错误消息(您可以,但这取决于您)。

  4. 保存 base.py,然后从 apt 位置运行以下命令以查看服务器启动。

    python manage.py runserver
    
于 2013-12-22T21:05:42.960 回答