在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装
具体安装使用方法,可参考 Python3 - MySQL适配器 PyMySQL
Django 如何链接 MySQL 数据库, 需要在.../项目/settings.py 文件中修改数据库相关配置。
配置代码如下
# Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } # MySQL DATABASES = { 'default':{ 'ENGINE':'django.db.backends.mysql', 'HOST':'127.0.0.1', 'PORT':'3306', 'NAME':'guest', # 数据库名 'USER':'username', 'PASSWORD':'password', 'OPTIONS':{ 'init_command':"SET sql_mode='STRICT_TRANS_TABLES'" }, } } # mysql5.0以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。 # ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。 # TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。 # STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。 #
配置信息从上到下依次是驱动(ENGINE) , 主机地址(HOST) , 端口号(PORT) , 数据库(NAME),
登录用户名(USER) , 登录密码(PASSWORD) 。
关于, sql_mode 的设置, 请参考 Django 文档。
注意:
Django 在连接 MySQL 数据库时默认使用的是 MySQLdb 驱动, 然而我们没有安装该
驱动, 因为它并不支持 Python3, 我们现在安装的是 PyMySQL 驱动, 如何让当前的 Django 通过 PyMySQL 来连接 MySQL 数据库呢? 方法很简单。
安装后,启动应用,报如图错误,
解决办法:在 anaconda3 ▸ envs ▸ Adil ▸ lib ▸ python3.7 ▸ site-packages ▸ django ▸ db ▸ backends ▸ mysql ▸__init__.py 中添加如下代码
在.../__init__.py 中添加:
import pymysql pymysql.install_as_MySQLdb()
至此,完成配置工作。
如图不再 报错。