如何在Django项目中使用MySQL替代默认SQLite数据库?
切换Django默认数据库到MySQL(Python 3.x环境)
刚好我之前折腾过Django从SQLite转MySQL的操作,结合官方文档给你梳理下最靠谱的方案——毕竟Python 3.x确实不支持老的MySQLdb模块了,官方专门推荐了两个替代选项:
一、官方认可的驱动选择
MySQL拥有多款实现了PEP 249中描述的Python数据库API的驱动:
• mysqlclient是原生驱动,为推荐选择;
• MySQL Connector/Python是Oracle推出的纯Python驱动,无需依赖MySQL C库
下面分别说下这两个驱动的安装和配置方式:
1. mysqlclient(官方首推)
这个是性能最优的原生驱动,大部分生产环境都会优先选它。
- 安装步骤:
- Linux(Ubuntu/Debian):先装系统依赖,不然编译会报错
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential pip install mysqlclient - Windows:直接用pip安装即可,如果遇到编译问题,也可以找对应Python版本的wheel包安装
pip install mysqlclient
- Linux(Ubuntu/Debian):先装系统依赖,不然编译会报错
- Django配置修改:打开项目根目录的
settings.py,把默认的SQLite配置替换成MySQL的:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的数据库名称', # 要先在MySQL里创建好这个库 'USER': 'MySQL用户名', 'PASSWORD': 'MySQL密码', 'HOST': 'localhost', # 如果数据库在远程服务器就填对应IP 'PORT': '3306', # 可选:指定字符集,避免中文乱码 'OPTIONS': { 'charset': 'utf8mb4', }, } }
2. MySQL Connector/Python(纯Python驱动)
这个是Oracle官方出品的,不需要依赖系统的MySQL C库,适合一些没法装系统依赖的轻量环境。
- 安装步骤:直接用pip安装即可
pip install mysql-connector-python - Django配置修改:注意这里的ENGINE和mysqlclient不一样,要改成
mysql.connector.django:DATABASES = { 'default': { 'ENGINE': 'mysql.connector.django', 'NAME': '你的数据库名称', 'USER': 'MySQL用户名', 'PASSWORD': 'MySQL密码', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', }, } }
二、切换数据库的注意事项
- 切换前一定要备份原SQLite的数据!可以用
python manage.py dumpdata > data.json导出所有数据,切换配置后先执行python manage.py migrate创建表结构,再用python manage.py loaddata data.json导入数据 - 确保MySQL服务已经启动,并且你已经手动创建了对应的数据库(可以用MySQL命令行执行
CREATE DATABASE 你的数据库名 CHARACTER SET utf8mb4;) - 如果安装驱动时遇到编译错误,Linux下检查是否装了mysql开发库,Windows下可能需要安装Visual C++ Build Tools
内容的提问来源于stack exchange,提问作者lothakim




