django 连接 mysql

本文介绍了如何在Python3环境下使用Django连接MySQL数据库,主要讨论了pymysql和mysqlclient这两个常用的驱动,并提供了安装和配置Django设置的步骤。

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值