簡體   English   中英

具有動態數據庫表的Django模型

[英]Django model with dynamic db tables

我正在使用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; 

到目前為止,似乎最好的解決方案是進行自定義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) 
 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM