django 连接 mysql
背景
我们使用 Django flask 等操作 mysql,实际上底层还是通过 python 来操作的。因此我们想要使用 django 来操作 mysql, 首先还是需要安装一个驱动程序。在 python3 中,驱动程序有多种选择
eg: pymysql mysqlclient 等
- MySQL-python:也就是MySQLdb。是对C语言操作MySQL数据库的一个简单封装。遵循了Python DB API v2。但是只支持Python2,目前还不支持Python3。
- mysqlclient:是MySQL-python的另外一个分支。支持Python3并且修复了一些bug。
- pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。
- MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的。效率不高。
现在最常用的是 mysqlclient 以及 pymsql
使用 pymysql 连接数据库(以下均在python3环境下)
先安装 pymysql
pip3 install pymysql
在项目的根目录(setting.py的同级_init.py_ )中导入 pymysql
# __init__.py
import pymysql
pymysql.install_as_MySQLdb()
setting.py 中配置 mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project',
'USER': os.environ.get('MYSQL_USER'),
'PASSWORD': os.environ.get('MYSQL_PASSWORD'),
'HOST': os.environ.get('MYSQL_HOST'),
'PORT': os.environ.get('MYSQL_PORT'),
}
}
使用 mysqlclient 连接 mysql
mysqlclient 在不同的系统中安装方式不同
- window 系统中安装 mysqlclient
pip install wheel
前往https://www.lfd.uci.edu/~gohlke/pythonlibs/ #下载mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl(需根据自己电脑的配置下载对应的版本, 这里使用的是x64)
pip install wheel mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl
- linux(centos) 中安装 mysqlclient
yum install mysql-devel mysql-devel
pip3 install mysqlclient
- Linux(Ubuntu)
sudo apt-get install python-dev default-libmysqlclient-dev
pip install mysqlclient
- MacOs
参考:https://www.jianshu.com/p/80f3f07f834c
Setting.py 配置 mysql 连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project',
'USER': os.environ.get('MYSQL_USER'),
'PASSWORD': os.environ.get('MYSQL_PASSWORD'),
'HOST': os.environ.get('MYSQL_HOST'),
'PORT': os.environ.get('MYSQL_PORT'),
}
}
- Docker Alpine 中安装 mysqlclient
# Dockerfile
FROM python:3.5-alpine
RUN apk update && \
apk add --no-cache mariadb-dev gcc musl-dev git
# 执行这一步之后即可安装 mysqlclient
RUN sed '/st_mysql_options options;/a unsigned int reconnect;' /usr/include/mysql/mysql.h -i.bkp
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
# requirements.txt
Django==1.11.5
django-crispy-forms==1.7.2
django-formtools==2.1
django-mysql==3.2.0
django-reversion==2.0.13
httplib2==0.9.2
mysqlclient==1.4.4
virtualenv==15.0.3
requests==2.18.2
本文介绍了如何在Python3环境下使用Django连接MySQL数据库,主要讨论了pymysql和mysqlclient这两个常用的驱动,并提供了安装和配置Django设置的步骤。
8557

被折叠的 条评论
为什么被折叠?



