如何使 Django 与不受支持的 MySQL 驱动程序(例如 gevent-mysql 或 Concurrence 的 MySQL 驱动程序)一起工作?
-
26-09-2019 - |
题
我有兴趣在 Concurrence 或 gevent 等异步框架上运行 Django。这两个框架都带有自己的异步 MySQL 驱动程序。
问题是 Django 仅官方支持 MySQLdb。我需要做什么才能使 Django 与 gevent 或 Concurrence 附带的 MySQL 驱动程序一起工作?
有我可以遵循的分步指南吗?这是一项重大事业吗?
谢谢。
解决方案
三个呼为@ traviscline的建议,去与 pymysql 。他的建议是基于此帖来自Mozilla的 。所需要的是一个简单的补丁到你的manage.py文件
#!/usr/bin/env python
+try:
+ import pymysql
+ pymysql.install_as_MySQLdb()
+except ImportError:
+ pass
改变您的设置文件的进口,和猴补丁(),因为pymysql是一个纯Python驱动程序。
特拉维斯提到,他通过改变进口和运行pymysql,MySQLdb的,和myconnpy的单元测试用于测试的兼容性。
请注意,目前已经有要提防的更精细的细节例子 - 但总体而言,这是一个优雅的,维护的解决方案。当我在生产中得到这个运行我会更新!
其他提示
我成功地让 pymysql 与 Django 一起工作,执行以下操作:
- 注释掉开头的 try- except 块 基础.py 文件,其中导入 MySQLdb。
将以下四行添加到 基础.py
try: import pymysql as Database except ImportError: pass
正如链接中提到的 蛋黄油 发布,转到base.py文件并查找替换
MySQLdb
和pymysql
在文件的相关部分,即不必费心更改错误消息(您可以,但这取决于您)。保存base.py,然后从apt位置运行以下命令以查看服务器启动。
python manage.py runserver
不隶属于 StackOverflow