我在一个大&复杂的django项目。我被要求准备它接受虚拟数据,以测试其生产准备情况(没有人期望“楼上”的决定,所以每个人都被猝不及防)。
为此,我被要求创建另一个数据库(当前数据库的精确副本),以便填充数百万个虚假数据。
如果可能的话,我正在徘徊,将“假数据数据库”与当前项目一起使用,并让它“聪明地”选择要使用的数据库,具体取决于网址(可能)。例如:
http://example.com/login/
会映射来自工作数据库的数据,http://test.example/com/login
会自动将数据映射到“假数据”数据库。两者都使用相同的django项目和相同的Apache Virtualhost条目。
这有意义吗?或者我应该创建一个全新的django项目(并修改Apache)?
PS:该项目目前正处于开发过程中,因此我们可以使用相同的服务器进行测试和基准测试。
答案 0 :(得分:1)
您可以在django中使用多个数据库。请参阅:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#multiple-databases
但是根据您的描述,听起来更像是您需要2种不同的环境。一个用于接受此虚拟数据的非生产环境,以及另一个生产环境。您可以拥有2个不同的settings.py,并根据环境导入正确的settings.py。
答案 1 :(得分:0)
如果我理解这个问题,那么这就是我要采取的方法
1)在settings.py文件中(我使用的是mysql)
DATABASES = {
'default':{},
'db1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'Database_1',
'USER': '',
'PASSWORD': '',
},
'db2':{
'ENGINE': 'django.db.backends.mysql',
'NAME': 'Database_2',
'USER': '',
'PASSWORD': '',
}
}
2)在urls.py文件中 (示例网址模式)
urlpatterns = [
url(r'^/login/$', views.xzy, {'database': 'db1'}),
url(r'^com/login/$', views.xzy, {'database': 'db2'})
]
3)在xzy(request, database)
中,您可以执行以下操作:
records = Model.objects.using(database).all()
您可以使用'数据库路由器'同样。 https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing
这应该在一个简单的环境中工作。如果您使用的是弹性搜索或solr,则需要修改此方法。
希望这有帮助。