在 sql 查询 python 中使用时格式选项不起作用

Format option not working when used inside an sql query python

我必须使用 python 中的 .format 选项编写一个 sql 查询。我正在使用下面的代码,但它并没有像我预期的那样工作。

alarm_tables = ["treevashialarm","treekhopolialarm","treetalegaonalarm"]
alarm_types = ['As%%','Sd%%','Multi%%']

这是我的查询:

query_types = "SELECT \"alarmSeverity\", COUNT(*) FROM " + "'{0}'" + " WHERE isparent = true and eventdate+eventtime BETWEEN TIMESTAMP " + "'{1}" + "T18:30:00.000Z' " + " and TIMESTAMP " + "'{2}" + "T18:29:59.999Z' " + "and eventtype like '{3}' group by \"alarmSeverity\""

我使用的格式选项如下:

for i in alarm_tables:
    for j in alarm_types:
        query_types.format(i,'2019-10-01','2019-10-02',j)
        print(query_types)

我得到如下输出:

SELECT "alarmSeverity", COUNT(*) FROM '{0}' WHERE isparent = true and eventdate+eventtime BETWEEN TIMESTAMP '{1}T18:30:00.000Z'  and TIMESTAMP '{2}T18:29:59.999Z' and eventtype like '{3}' group by "alarmSeverity"

我的预期输出之一如下:

SELECT "alarmSeverity", COUNT(*) FROM treevashialarm WHERE isparent = true and eventdate+eventtime BETWEEN TIMESTAMP '2019-10-09T18:30:00.000Z' AND TIMESTAMP '2019-10-10T18:29:59.999Z' and eventtype like 'As%' group by "alarmSeverity";

我怎样才能得到想要的 output。为什么 format 不是 working.Is 有一个工作 around.The for loop 不工作 well.It随机给出random output

感谢任何帮助!

format()不修改原字符串:

所以如果你想这样做,你必须写:

query_types_formated = query_types.format(i,'2019-10-01','2019-10-02',j)