Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
176 views
in Technique[技术] by (71.8m points)

Storing output of SQL Query in Python Variable

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

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

1 Reply

0 votes
by (71.8m points)

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...