You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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
      
  • 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

火山引擎 最新活动