参考this,我尝试修改我的SQL查询,如下所示:
query2 ="""insert into table xyz(select * from abc where date_time > %s and date_time <= ( %s + interval '1 hour'))"""
cur.execute(query2,(rows,rows))
它说错误
function takes at most 2 arguments(3 given)
是否有任何解决此错误的方法?
答案 0 :(得分:0)
您的查询有些可疑,看起来不对:
insert into table xyz
(select * from abc where date_time = %s and %s + interval '1 hour')
我建议:
insert into xyz (<columns of xyz>)
select <columns of abc>
from abc
where date_time > ?
查询已被编辑,因此它应该是:
insert into xyz (<columns of xyz>)
select <columns of abc>
from abc
where date_time > ? and date_time <= ? + interval '1 hour'
现在执行查询时:
cur.execute(query2,(ts, ts))
查询字符串中的参数标记(?)的数量应该等于元组中元素的数量。
如果您在查询中使用%s(不推荐),您可以使用以下命令为这些变量分配值:
"""insert into xyz (<columns of xyz>)
select <columns of abc>
from abc
where date_time > %s""" % (value)