使用MySQL作为Django数据库

Django作为WEB开发框架,默认使用SQLite作为开发数据库。生产环境,则通常需要使用MySQL或者PostgreSQL。这里介绍在CentOS上部署完MySQL和Python+Django环境之后,如何转换到MySQL后端。

Django使用mysql后端需要通过pip安装mysqlclient模块,这个编译安装过程依赖系统安装mysql-devel软件包。对于早期的CentOS 5,建议采用MySQL官方软件仓库在CentOS 5安装MySQL 5.7,这样可以方便完成mysqlclient编译(官方MySQL安装路径的库文件和头文件可以直接被编译程序识别,其他非标准路径需要设置)

安装MySQL

CentOS

wget --no-check-certificate https://dev.mysql.com/get/mysql57-community-release-el5-8.noarch.rpm

rpm -ivh mysql57-community-release-el5-8.noarch.rpm

yum install mysql-community-server mysql-community-client \
mysql-community-devel

对于CentOS/RHEL 5建议使用MySQL官方仓库安装安装;CentOS/RHEL 6及以上版本,建议使用发行版自带的MiraDB。这样可以确保mysql-devel库及头文件都在标准目录下,方便后续编译安装Python的mysqlclient。(高版本6/7也可直接使用发行版提供的MySQL-python

  • 执行初始化安全设置:

mysql_secure_installation

macOS

在macOS上,要安装mysqlclient for django,需要首先通过brew安装mysql软件,设置环境后才能够使用pip install mysqlclient。否则会出现报错EnvironmentError: mysql_config not found:

在macOS平台使用Jetbrains的PyCharm来开发Django,需要安装对应的mysqlclient。安装方法参考Install mysqlclient for Django Python on Mac OS X Sierra

这里执行source venv2/bin/activate是为了激活Python virtualenv环境

准备数据库

参考 创建MySQL数据库和授权 生成一个用于Django应用的简单数据库

参考

Django支持MySQL 5.5或更高版本

安装MySQL Django adapter,mysqlclient

参考 Part VII.b – Install and Configure MySQL for Django

  • 准备python虚拟环境(注意:系统安装Python 2.7和pip)

  • 创建django项目

这里初始花一个django项目(startproject myapp .),然后在这个项目下创建一个名为first_app的应用,这样后续就可以通过访问first_app来实现,并且不同功能模块可以划分到不同的应用下面。

  • 配置settings.py数据库配置,参考django databases - 默认是sqlite3,需要修改成MySQL配置

注意:这里将数据库密码明文存储在配置文件中是存在安全隐患的。解决的方法是采用环境变量替换。参考MySQL password in Django设置用户环境变量配置文件~/.bash_profile

将上述配置修改成

Install and Configure MySQL for Django提供了另外一种基于django环境的设置方法(不依赖Linux/Unix shell环境)。

  • 执行检查和同步迁移数据库

  • 运行django服务

参考

Last updated

Was this helpful?