Django使用mysql数据库

环境声明

  • Python 3(3.7.1)
  • Django 2(2.1.7)
  • 时间:2019年2月16日
  • MySQL Server version: 8.0.14 MySQL Community Server - GPL

配置settngs.py

项目文件下的settings.py

搜索DATABASES

按如下模式配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', #使用mysql作为数据库
        'NAME': 'your database name',
        'USER': 'your mysql user name',
        'PASSWORD':'your mysql user password',
        'HOST':'localhost', #表示允许从本地连接数据库并进行访问
        'PORT':'3306', #mysql默认端口号
    }
}

配置__init__.py

项目目录下的__init__.py

import pymysql
pymysql.install_as_MySQLdb()

这个的原因大概是因为版本更新的问题,现在的版本需要使用pymysql这个模块,但是原本的代码是用MySQLdb搞得,于是用一句代码将pymysql当做MySQLdb.


至此,已经将mysql配置为了Django项目所使用的数据库了。
可以自己定义models了。然后执行virtualenv搭建的虚拟环境下执行

python manage.py makemigrations
python manage.py migrate

即可生效。

caching_sha2_password问题

这个问题按理来说不会出现。
MySQL 8 之后默认使用caching_sha2_password加密验证方式,有些人可能django使用MySQL会遭遇这个问题。不算很好的一种做法是切换为传统的方式。
mysql中root账户登陆后:

# 修改加密方式
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# 刷新数据库
FLUSH PRIVILEGES;