Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
164 views
Welcome To Ask or Share your Answers For Others

1 Answer

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...