Django动态使用多个数据库而无需在设置中定义

时间:2014-03-05 19:43:21

标签: python mysql database django django-models

TL; DR:除了我的默认django数据库,我需要从两个不同的用户选择的数据库中提取数据。除了使用connection.cursor()运行手动查询之外,不确定如何设置django来访问它们.execute(“SQL”)

Situtaion: 进程创建sqlitedb。数据库导入到mysql中。我正在编写一个与该mysql数据库交互的django应用程序(称之为StreamDB),另一个用户需要查看的mysql数据库(调用此SourceDB),当然还有默认的Django app mysql DB(称之为AppDB)。

SourceDB(prod和test)将有两个版本,StreamDB将数据导入到这些SourceDB中的一个且只有一个。

我的“AppDB”中有一个表/模型,用于标识这些源(StreamDB名称,它映射到的两个SourceDB中的哪一个,以及其他一些数据。这是一个示例记录:

name: foo
path: /var/www/data/test/foo.sqlite
db_name: foo
source_db_name: bar
date_imported: 2014-05-03 10:20:30

这些是通过django管理员管理并手动添加(或通过外部脚本动态添加)

困境 根据选择的源,我的SQL需要连接这两个DB的表。使用dyanmic db names的示例查询:

SELECT a.image_id, a.image_name, b.title, b.begin_time 
FROM <selected_streamdb>.image a JOIN <selected_sourcedb>.event b ON b.event_id = a.event_id
WHERE a.image_type = 'png'

我可能填写变量吗?

问题 无论如何在这种情况下使用Django的ORM模型? django可以从数据库表中获取DATABASE.settings吗?我是否创建了一个管理此模型的模型? (即上面的源表?)

我不介意在后端管理数据库权限(假设django设置中的app数据库用户可以访问所有数据库)

希望以上所有内容都有道理。

0 个答案:

没有答案