【问题标题】:Django model with dynamic db tables具有动态数据库表的 Django 模型
【发布时间】:2019-03-15 22:53:48
【问题描述】:

我正在使用 Django 与另一个 (JAVA) 应用程序交互,该应用程序基于在数据库中的运行时表中生成的某些事件,具有相同的模型。所以我没有直接控制数据库。例如:

Sensor1
id | value | time
1      10      2018-10-11

Sensor2
id | value | time
1      12     2018-10-11

目前,我的 Django 模型看起来像这样:

class Sensor(models.Model):
 value = models.IntegerField()
 time = models.DatetimeField()

 class Meta:
  managed = False
  db_table = "Sensor1"

如果我可以通过某种方式设置模型以便能够根据查询从不同的表中获取数据,你有什么线索吗? 理想情况下,我可以通过以下方式获取数据:

config_tables=['Sensor1','Sensor2']

for table in config_tables:
 data = Sensor.objects.table(table).objects.all()
 ...

其他可能性也可能是在不同的表上执行 SQL 查询,所以可能是这样的:

SELECT * FROM %s; 

【问题讨论】:

  • @Selcuk 建议的解决方案是针对另一个数据库,而不是针对另一个表。那里提出的解决方案并没有解决这个问题

标签: django django-models django-database django-datatable


【解决方案1】:

目前看来,最好的解决方案是创建一个自定义 SQL 查询,因此在本例中,models.py 中可能是这样的:

def get_all_parameters(db_table):
    return Parameters.objects.raw('SELECT * FROM %s' % db_table)

并将其称为:

get_all_parameters('Sensor1')

或作为:

TABLES = ['Sensor1', 'Sensor2']

for table in TABLES:
 parameters = get_all_parameters(table) 
 ...

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 2015-09-11
    • 2020-06-21
    • 2011-12-09
    • 1970-01-01
    • 2020-09-17
    • 2015-02-12
    • 2014-04-03
    相关资源
    最近更新 更多