Django数据库配置
数据库配置
数据库配置是选择项目所使用的数据类型,不同的数据库需要设置不同的数据库引擎,数据库引擎实现项目于与数据库的连接。Django提供4种数据库引擎。
- ‘django.db.backends.postgresql’
- ‘django.db.backends.mysql’
- ‘django.db.backends.sqlite3’
- ‘django.db.backends.oracle’
项目创建时默认使用Sqlite3数据库,这是一款轻型的数据库,常用于嵌入式系统开发,且占用资源非常少。Sqlite3数据库配置信息如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
1.1、 mysqlclient连接MySql
由于mysqldb不支持Python3,因此Django2.0以上版本不再使用mysqldb作为MySql的连接模块,而选择mysqlclient模块,但两者之间在使用上并没有太大的差异。
在配置MySQL之前,需要安装mysqlclient模块。使用pip install mysqlclient即可。
项目的配置文件setting.py中配置MySQL数据库连接信息,代码如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':'3306'
}
}
为了验证数据库连接信息是否正确,在PyCharm的Terminal界面下输入Django操作指令python manage.py migrate来创建Django内置功能的数据表,能到自己建立的数据库中查找到这些数据表,则表示数据库连接正确!
1.2、pymysql连接MySQL
除了使用mysqlclient模块连接MySQL之外,还可以使用pymysql模块连接MySQL数据库。pymysql模块安装使用pip在线安装即可,pymysql模块安装成功后,项目配置文件settings.py的数据库配置信息无需修改,只要在MyDjango文件夹__init__.py中设置数据库连接模块即可,代码如下:
import pymysql
pymysql.install_as_MySQLdb()
验证的方法与mysqlclient连接MySql一样。值得注意的是,若MySQL是8.0以上版本,在Django连接MySQL数据库时会提示django.db.utils.OperationalError的错误信息,这是因为MySQL8.0版本的密码加密方式发生了改变,8.0版本的用户密码采用的是CHA2加密方式。为了解决这个问题,通过SQL语句将8.0的加密方式改回原来的加密方式,在MySQL的可视化工具中运行以下SQL语句:
# newpassword 是已设置的用户密码
ALERT USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
FLUSH PRIVILEGES;
Django除了支持PostgreSQL、SQLite3、MySQL和Oracle之外,还支持SQL Server和MongoDB的连接。
1.3 多个数据库的连接方式
在一个项目中可能需要使用多个数据库才能满足开发需求,特别对于数据量过大的系统,单个数据库存储的数据越多就会使服务器负载越大,因此会将数据划分多个数据库服务器共同存储。
#数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #数据库引擎
'NAME': 'pythondms', #数据库名
'USER': 'root', #用户名
'PASSWORD': '', #密码
'HOST': '36.103.245.29', #数据库主机,默认为localhost
'PORT': '3306', #数据库端口,MySQL默认为3306
'OPTIONS': {
'autocommit': True,
}
},
'default1': {
'ENGINE': 'django.db.backends.mysql', #数据库引擎
'NAME': 'pythondms', #数据库名
'USER': 'root', #用户名
'PASSWORD': '', #密码
'HOST': '39.107.35.95', #数据库主机,默认为localhost
'PORT': '3306', #数据库端口,MySQL默认为3306
'OPTIONS': {
'autocommit': True,
}
}
}
项目中连接了多个数据库,则数据库之间的使用需要遵从一定的规则和设置。比如项目中定义了多个模型,每个模型所对应的数据表可以选择在某个数据库中生成,如果模型没有指向某个数据库,模型就会在key为default的数据库中生成。
下一篇: C#的冒泡排序