早年在 Debian 上搭 Django 项目,连 MySQL 时经常卡在「驱动装不全」:系统里装了 MySQL,Python 里 import MySQLdb 却失败,或编译扩展时缺头文件。把依赖一次装齐,后面省事很多。
下面是当年我在 Debian 上走通的一套步骤(面向当时常见的 Python 2 + MySQL-python 组合;现在新项目更建议 Python 3 + mysqlclient / PyMySQL,但思路一样:系统库 + 开发头文件 + Python 包)。
1. 安装 MySQL 与客户端开发库
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-devlibmysqlclient-dev 很关键:没有它,后面 pip install MySQL-python 编译时容易报找不到头文件/库。
(原文里有一处笔误 isntall,正确拼写是 install。)
2. 安装 Python 编译与 pip 环境
sudo apt-get install python-pip python-dev build-essentialpython-dev / build-essential 提供编译 C 扩展需要的工具链。
3. 安装 Python MySQL 驱动
pip install MySQL-python装好后在 Django settings.py 里配置 DATABASES,引擎用 django.db.backends.mysql,填好 NAME / USER / PASSWORD / HOST 即可。
常见后续坑
- 字符集:库和表建议 utf8mb4,避免表情符、冷僻字踩坑(另文有建库指定字符集的记法)。
- 时区:
USE_TZ = True时,naive datetime 会报警(我也单独记过一条 RuntimeWarning)。 - 权限:MySQL 用户要有对应库的权限,不要只用 root 图省事到生产。
为何记下
一人公司从原型到上线,经常自己装栈。Django 连 MySQL 的失败点往往不在 settings,而在 OS 级开发包没装。把「server + client + libmysqlclient-dev + python-dev + 驱动」当成检查清单,比对着报错一条条搜更快。换到新发行版时,把包名映射过去即可(如 default-libmysqlclient-dev)。



No comments yet