参考资料:
http://www.cnblogs.com/livingintruth/p/3760958.html
http://stackoverflow.com/questions/14254315/django-dynamic-database-file
使用场景:自动生成报告平台,每份报告单独存储一个db
详情描述:django的setting里的DATABASE定义会使用到的数据
1
DATABASE = {
2 'default':{
3 'ENGINE': 'django.db.backends.sqlite3',
4 'NAME': 'path/to/database.sqllite3',
5 'USER':'',
6 'PASSWORD':'',
7 'HOST': '',
8
'PORT':'',
9
}
18
}
实际场景中,NAME是动态变化。即只有在存储和查询数据时才知道NAME。
解决办法:
from django.db import connections
在操作数据之前
connections.databases[‘new_db’]={'ENGINE': 'django.db.backends.sqlite3',
'NAME': database_path}
我们拿到一个obj,或者创建一个新的obj后,使用非default db时, 参数中传进using
obj = Person(name=
'
wy
', uid=530)
obj.save(using=
'
search
')
obj.delete(using=
'
new_db
')
注意:新建的database不要和setting里定义的重名