Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:“;“显示数据库”;功能?_Django_Mysql Python - Fatal编程技术网

Django:“;“显示数据库”;功能?

Django:“;“显示数据库”;功能?,django,mysql-python,Django,Mysql Python,我有一个奇怪的遗留数据库用例:我有多个数据库,有(1)完全相同的模式,但(2)非常不同的数据集。数据库,使用此模式的整个数据库,每周都被添加到总数据集中 是否有方法(1)检查服务器以找出哪些数据库可用,如果有,是否有方法(2)通过URL而不是当前的每模型解决方案(因为我的模型没有更改,只有相关的基础表)路由到正确的数据库 这种自省是否可以动态进行,以便每次有人访问主页时,我都可以向他们显示可用数据库的列表 当然,通用解决方案更可取,但目前可以接受仅使用MySQL的解决方案 (欧洲分子生物学实验室

我有一个奇怪的遗留数据库用例:我有多个数据库,有(1)完全相同的模式,但(2)非常不同的数据集。数据库,使用此模式的整个数据库,每周都被添加到总数据集中

是否有方法(1)检查服务器以找出哪些数据库可用,如果有,是否有方法(2)通过URL而不是当前的每模型解决方案(因为我的模型没有更改,只有相关的基础表)路由到正确的数据库

这种自省是否可以动态进行,以便每次有人访问主页时,我都可以向他们显示可用数据库的列表

当然,通用解决方案更可取,但目前可以接受仅使用MySQL的解决方案

(欧洲分子生物学实验室基因组库中的用例,每隔几个月发布一套MySQL数据库转储,每个物种一个数据库,核心模式大约有二十个表,可以很好地映射到六个左右的应用程序。模式稳定,多年来没有改变。)

是的,您可以,而
显示数据库
也不例外。但很难更改可用数据库的列表并在它们之间切换。恐怕这需要对django的内部进行修改或修补

更新:等等!我研究了
django.db.connections
后面的代码,发现如果您只是在运行时扩展
settings.DATABASES
,那么您就可以在代码中使用
SomeModel.objects.using('some-new-database').all()
。还没有测试过,但相信这应该有效

是的,您可以,而且
显示数据库
也不例外。但很难更改可用数据库的列表并在它们之间切换。恐怕这需要对django的内部进行修改或修补


更新:等等!我研究了
django.db.connections
后面的代码,发现如果您只是在运行时扩展
settings.DATABASES
,那么您就可以在代码中使用
SomeModel.objects.using('some-new-database').all()
。还没有测试过,但相信这应该有效

谢谢。我研究了你的建议,效果很好。还有一些threadlocal的东西,我可以使用一些中间件根据需要切换数据库。遗憾的是,Django不能使用EMBL数据集,因为它们是用无PK表显式生成的。这样的黑客……欧洲分子生物学图书馆提供的冷冻基因组数据集。有关详细信息,请参见ensembl.org。我们正试图将这些数据集用作商业项目的附件,问题是我们从哪一层开始:数据库、定制ORM(用非常冗长、非常迂腐的Perl编写)还是更高层次?结果证明我必须使用SqlAlchemy来访问EMBL集,所以该网站在某些方面是Django ORM的奇怪混合体,还有其他人的炼金术。谢谢。我研究了你的建议,效果很好。还有一些threadlocal的东西,我可以使用一些中间件根据需要切换数据库。遗憾的是,Django不能使用EMBL数据集,因为它们是用无PK表显式生成的。这样的黑客……欧洲分子生物学图书馆提供的冷冻基因组数据集。有关详细信息,请参见ensembl.org。我们正试图将这些数据集用作商业项目的附件,问题是我们从哪一层开始:数据库、定制ORM(用非常冗长、非常迂腐的Perl编写)还是更高层次?结果证明我必须使用SqlAlchemy来访问EMBL集,所以该网站在某些方面是Django ORM的奇怪混合体,还有其他人的炼金术。