在Python变量中存储SQL查询的输出

时间:2014-06-22 16:02:37

标签: python sql

参考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)

是否有任何解决此错误的方法?

1 个答案:

答案 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)