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)