django可支持大部分主流數據庫,如Mysql,MongoDB, Oracle,Redis等等,可同時配置多個
一、Mysql數據庫的配置
1. 數據庫接口配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'MyBlog', 'USER': 'zgzeng', 'PASSWORD': 'zgzeng', 'HOST': '127.0.0.1', 'PORT': 3306, } }
我們要創建如接口所寫的數據庫
2.創建數據庫和用戶
2.1 創建數據庫
# root用戶進入mysql數據庫 mysql -uroot -p密碼;
create database MyBlog charset=utf8;
2.2 創建用戶
創建用戶並授予權限,一般情況下我們都不會用到root用戶,這是最高級別權限的用戶
# 創建用戶和密碼 create user 'zgzeng' identified by 'zgzeng'; # 授予權限 grant all privileges on MyBlog.* to 'zgzeng'@'%'; # 刷新權限 flush privileges;
又或者
grant all privileges on MyBlog.* to 'zgzeng'@'%' identified by 'zgzeng';
flush privileges;
2.3 創建完用戶之后,導入pymysql
如圖中安裝pymysql包
安裝完成之后再如圖操作
或者在使用另外一種安裝方法
# 更新ubuntu包
sudo apt-get update
# 安裝依賴關系
sudo apt-get install default-libmysqlclient-dev
# 進入虛擬環境 workon MyBlog # 在虛擬環境下安裝 pip install -i https://pypi.douban.com/simple mysqlclient
# 查看是否安裝完成
pip list
然后接下來一樣,需要在__init__.py文件中導入pymysql模塊
在通常的生產過程中,不會如上來配置數據庫,當我們把代碼傳到代碼管理平台之后,這些隱私就會被暴露,所以會換成另外一種配置方法
3.在第三方管理文件夾中存入數據庫配置信息
3.1 創建公共文件夾
數據庫接口的配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': 'utils/dbs/my.cnf', }, } }
3.2 cnf文件的配置
3.3 配置完成后,再帶入pymysql
操作如同2.3
二.Redis數據庫的配置
為了讓服務器更加流暢地運行,需要用專門的數據庫對一些緩存數據進行存儲,通常情況我們會用redis數據庫,比如一些圖形驗證碼和短信驗證碼,會放在redis數據庫中進行比對驗證
配置redis緩存,用於存放用戶session信息
1.安裝插件模塊
方法1:在setting的project interpreter中安裝 django-redis插件
方法2:在當前項目的虛擬環境下安裝,安裝命令:pip install -i https://pypi.douban.com/simple django-redis
2. 在settings.py文件中指定redis配置
CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/0', # 這里的6379/0的0代表數據庫的順序,如果我們想要配置多個,就可以將后面配置的數據庫配1,2,3等等 'OPTIONS': { 'CLIENT_CLASS': 'django_redis.client.DefaultClient', } } }
如果我們想要一個緩存短信驗證碼,可以 'LOCATION': 'redis://127.0.0.1:6379/0'
如果想要一個緩存圖形驗證碼的時候,就可以LOCATION:redis://127.0.01:6379/1
我們在安裝完redis之后,就需要來檢查以下環境下的redis數據庫是否安裝好了
# 進入開發環境,輸入命令redis-cli 127.0.0.1:6379>ping PONG # 當返回來的是PONG,這就表明安裝成功了,如果不是就說明安裝沒成功
如果想要用1庫,那么輸入select 1
127.0.0.1:6379>SELECT 1
OK
127.0.0.1:6379>keys * # 查看這個庫中的內容
(empty list or set)