Django 数据库配置(一)
数据库配置
项目创建时默认使用Sqlite3数据库,这是一款轻量型的数据库,常用于嵌入式系统开发,而且占用的资源非常少,Sqlite3数据配置信息如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } }
而在Django项目上,想使用其他类型的数据库,比如mysql,则需要自行安装第三方模块(如pymysql),pymysql安装方式如下:
在DOS命令提示符窗口下输入
pip install pymysql
pymysql 安装完成后,需要项目文件夹的__init__.py 中设置数据库连接模块即可,代码如下:
#配置pymysql
import pymysql
pymysql.install_as_MySQLdb()
在项目下的settings中配置数据库链接信息:
DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # } "testDB":{ "ENGINE":"django.db.backends.mysql", "NAME":"goodsDB", "USER":"root", "PASSWORD":"root@123", "HOST":"192.168.129.130", "PORT":"3306" } }
多个数据库连接配置:
DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # } #第一个数据库配置 "testDB":{ "ENGINE":"django.db.backends.mysql", "NAME":"goodsDB", "USER":"root", "PASSWORD":"root@123", "HOST":"192.168.129.130", "PORT":"3306" }, #第二个数据库配置 "testManage":{ "ENGINE":"django.db.backends.mysql", "NAME":"Manage", "USER":"root", "PASSWORD":"Manage@123", "HOST":"192.168.129.130", "PORT":"3306" }
问题:在Django连接mysql数据库时,会提示:django.db.utils.OperationalError的错误信息,这是因为mysql8.0以上版本的密码加密方式发生了改变,mysql 8.0以上版本的用户密码采用的是CHA2加密方式。
解决:在mysql的管理工具中运行以下sql语句:
#设置新密码 alter user "root"@"localhost" IDENTIFIED with mysql_native_password by "root@123"; flush privileges;