一个django项目用到多个数据库,怎么配置以及使用?
第一步,先在项目的settings.py文件中配置数据库
DATABASES = {
# settings.py种自带的默认数据库,键是'default'。
'default': {
'ENGINE': 'django.db.backends.%s' % CONFIG.DB_ENGINE,
'NAME': CONFIG.DB_NAME,
'HOST': CONFIG.DB_HOST,
'PORT': CONFIG.DB_PORT,
'USER': CONFIG.DB_USER,
'PASSWORD': CONFIG.DB_PASSWORD,
'ATOMIC_REQUESTS': True,
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
}
},
# 如果项目中需要用到第二个(或多个)数据库,那么就需要再加新的字典,键为库名,值为该数据库的配置信息。
'zabbix': {
'ENGINE': 'django.db.backends.%s' % CONFIG.DB_ENGINE,
'NAME': CONFIG.ZABBIX_DB_NAME,
'HOST': CONFIG.ZABBIX_DB_HOST,
'PORT': CONFIG.ZABBIX_DB_PORT,
'USER': CONFIG.ZABBIX_DB_USER,
'PASSWORD': CONFIG.ZABBIX_DB_PASSWORD,
'ATOMIC_REQUESTS': True,
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
}
},
在ORM中的使用
# 在objects后加上 .using('库名') 之后再加查询条件
# 这条语句的意思是,再zabbix库种查User表种name为ybc且age为18的数据,返回数据中值name,age,address字段的数据。
User.objects.using('zabbix').filter(name='ybc', age='18').values('name','age','address')