我有一个奇怪的遗留数据库用例:我有多个数据库,(1)完全相同的模式,但(2)非常不同的数据集。使用此模式的数据库整个数据库每周都会添加到总数据集中。
有没有办法(1)内省服务器找出可用的数据库,如果有,有办法(2)通过URL路由到正确的数据库,而不是比当前的每个模型解决方案(因为我的模型不改变,只有相关的基础表)?
这种内省是否可以动态化,所以每次有人点击主页我都可以向他们展示可用数据库列表?
当然,通用解决方案更可取,但目前只接受MySQL解决方案。
(欧洲分子生物学实验室的基因组库中的用例,每隔几个月作为一组MySQL数据库转储发布,每个物种一个数据库,核心模式大约有20个表,可以很好地映射到6个左右应用程序。架构稳定,多年来没有变化。)
答案 0 :(得分:1)
是的,您可以run any raw SQL,而show databases
也不例外。但是很难改变可用数据库列表并在它们之间切换。我担心这需要修改或修补django的内部构件。
更新:等等!我查看了django.db.connections
背后的代码,发现如果只是在运行时扩展settings.DATABASES
,那么您将能够在代码中使用SomeModel.objects.using('some-new-database').all()
。没有测试,但相信这应该工作!