Django的MySQL Driver配置
之前写过一篇文章《Django@Python3添加MySQL/MariaDB支持》,现在Django对MySQL的支持已经很好了,现在就说一说最佳实践吧。
PEP 249 - Python Database API Specification v2.0规定了Python的数据库API。主要有三种API实现:
- MySQLdb 是Andy Dustman开发的、使用原生代码/C语言绑定的驱动,它已经开发了数十年。
- mysqlclient 是MySQLdb的一个支持Python3的fork,并且可以无缝替换调MySQLdb。mysqlclient目前是MySQL在Django下的推荐选择。
- MySQL Connector/Python 是Oracle写的,纯Python实现的客户端库。
以上所有的驱动都是线程安全的,且提供了连接池。MySQLdb
是唯一一个不支持Python3的。
如果你使用mysqlclient(推荐此方式)
settings.py中的配置如下:
1 | # Database |
第14行主要是为了防止警告:
(mysql.W002) MySQL Strict Mode is not set for database connection 'default'
当然,要在requirements.txt
中添加对mysqlclient的依赖:
1 | mysqlclient==1.3.10 |
然后运行python manage.py migrate :
1 | python manage.py migrate |
如果你使用MySQL Connector/Python
这么长时间了,Oracle官方的connector还是不太好用。
首先,一些补丁需要打:patch 93c7b38, patch 8dab00b要打上。
其次,这个包无法从PyPI安装了,只能从下载链接安装。
如果你要使用MySQL Connector/Python,首先,在requirements.txt中声明依赖:
1 | https://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-2.1.5.tar.gz#egg=mysql-connector-python |
其次,在settings.py里面关于数据库的配置如下:
1 | # Database |
然后运行python manage.py migrate 。
Django的MySQL Driver配置