Django 连接 MySQL 全流程

举报
周杰伦本人 发表于 2025/07/30 14:18:15 2025/07/30
【摘要】 Django 连接 MySQL 全流程踩坑实录开发环境把 Django 默认的 SQLite,但我们经常用的是mysql数据库,如何 换成 MySQL 呢?今天我们就来看一下一、在 MySQL 里建库# 终端 1:连本地 MySQLmysql -uroot -pmysql> CREATE DATABASE work_42_01 CHARACTER SET utf8mb4 ...

Django 连接 MySQL 全流程踩坑实录

开发环境把 Django 默认的 SQLite,但我们经常用的是mysql数据库,如何 换成 MySQL 呢?今天我们就来看一下


一、在 MySQL 里建库

# 终端 1:连本地 MySQL
mysql -uroot -p

mysql> CREATE DATABASE work_42_01
       CHARACTER SET utf8mb4
       COLLATE utf8mb4_unicode_ci;
mysql> USE work_42_01;
mysql> exit;

库名随意,但字符集务必用 utf8mb4,否则中文会炸。

这里就不多说了,熟悉mysql的都会


二、修改 Django 配置

修改settings.py文件

# bookmanager02/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'work_42_01',
        'USER': 'root',
        'PASSWORD': 'mysql',   # 你的 root 密码
        'HOST': '127.0.0.1',
        'PORT': 3306,
    }
}

改完一定要 Ctrl+S 保存,再跑 python manage.py runserver 做“冒烟测试”。


三、安装 MySQL 驱动

方案 A:mysqlclient(官方推荐,性能最好)

# 确保在虚拟环境里
pip install mysqlclient
  • Linux 报缺 mysql_config
sudo apt-get install libmysqlclient-dev   # Ubuntu/Debian
# 或
sudo yum install mysql-devel             # CentOS/RHEL
  • macOS 报缺 mysql.h
brew install mysql-client
export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"
pip install mysqlclient

方案 B:PyMySQL(纯 Python,装不上 A 再用)

pip install pymysql

然后在项目根目录的 __init__.py 追加两行:

import pymysql
pymysql.install_as_MySQLdb()
  1. 把纯 Python 写的 MySQL 驱动 pymysql 引进来。

  2. pymysql 伪装成 MySQLdb,让 Django 以为它调的是传统的 MySQLdb,其实底层走的是 pymysql,从而在不改任何 Django 源码的情况下,成功连上 MySQL。


四、验证是否成功

python manage.py runserver
  • 成功:浏览器打开 127.0.0.1:8000 无报错。

  • 失败:看报错关键词,对照下表秒修。


五、常见报错速查表

|报错信息|原因|一键修复| |-|-|-| |Did you install mysqlclient?|没装驱动|见“三”| |mysql_config not found|系统缺开发头文件|Ubuntu: apt-get install libmysqlclient-dev| |Access denied for user 'root'@'localhost'|密码写错|重新 mysql -uroot -p 验证| |Unknown database 'work_42_01'|库没建|回到“一”执行建库语句| |No module named 'MySQLdb'|PyMySQL 没装或未 install_as_MySQLdb()|方案 B 完整照抄|


六、一键回滚脚本(可选)

# 若搞砸了,快速回到 SQLite
cp settings.py.sqlite3 settings.py   # 提前备份

七、课后一句话

装好驱动、能跑 runserver 后,立刻 git commit -m "chore: switch to MySQL",明天直接写模型,不再折腾环境!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。