With reference to this, I tried modifying my SQL query as follows:
query2 ="""insert into table xyz(select * from abc where date_time > %s and date_time <= ( %s + interval '1 hour'))"""
cur.execute(query2,(rows,rows))
It gave an error saying
function takes at most 2 arguments(3 given)
Is there any work around for this error?
There is something fishy about your query, it does not look right:
insert into table xyz
(select * from abc where date_time = %s and %s + interval '1 hour')
I would suggest:
insert into xyz (<columns of xyz>)
select <columns of abc>
from abc
where date_time > ?
The query have been edited so it should be:
insert into xyz (<columns of xyz>)
select <columns of abc>
from abc
where date_time > ? and date_time <= ? + interval '1 hour'
Now when you execute your query:
cur.execute(query2,(ts, ts))
The number of parameter markers (?) in the query string should be equal to the number of elements in the tuple .
If you are using %s in your query (not recomended) you can assign values to those variables with:
"""insert into xyz (<columns of xyz>)select <columns of abc> from abc where date_time > %s""" % (value)