在 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)
我必须使用 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)