1、定义数据库
在django项目中, 一个工程中存在多个APP应用很常见;有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接。
在Django的setting中使用DATABASES设置定义数据库,可以将数据库映射到特定的别名字典中;DATABASES定义的是要给嵌套字典,该设置必须配置default默认数据库。默认使用SQLite进行单一数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mydatabase',
}
}
如不使用默认数据库定义可以将默认配置为空字典形式:
'default':{}
(1) DATABASES内部选项:
ATOMIC_REQUESTS:为True时数据库事务包装每个视图,默认为False
AUTOCOMMIT:为False时禁用Django事务管理,默认为True
ENGINE:设置数据库类型
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
HOST:指定连接的主机名或ip地址,如果使用(‘/’)正斜杠开头则通过套接字连接:
'HOST':'127.0.0.1' #TCP套接字连接
'HOST':'/var/run/mysql' #UNIX套接字
NAME:制定使用的数据库名,对于SQLite它是指定数据库文件的路径,在window上也要使用正斜杠。
'NAME':'databasename'
'NAME':'C:/user/mysite/sqlite3.db'
CONN_MAX_AGE:数据库连接的生命周期,默认为0请求结束时关闭数据库,设置为None无限持久连接。
OPTIONS:链接到数据库时使用的额外参数,可用参数因数据库类型而异。
'OPTIONS':{'read_default_file':'path/to/my.cnf',} #优先于NAME,USER,PASSWORD,HOST,PORT
#设置mysql启用严格模式
'OPTIONS':{'init_command':"SET sql_mode='STRICT_TRANS_TABLES'"}
PASSWORD:设置密码,不与SQLite一起使用
PORT:指定端口
TIME_ZONE:设置时区
DISABLE_SERVER_SIDE_CURSORS:True时禁用服务器端游标
USER:链接用户名
TEST:测试数据库
(2)自定义数据库