數據庫配置
項目創建時默認使用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;