“ProgrammingError:语法错误在或接近”当在python中使用psycopg2执行查询

问题描述:

我正在运行Python v 2.7和psycopg2 v 2.5 我有一个postgresql数据库函数,它返回一个sql查询作为文本字段。“ProgrammingError:语法错误在或接近”当在python中使用psycopg2执行查询

我正在使用以下代码调用该函数并从文本字段中提取查询。

cur2.execute("SELECT * FROM historian.generate_get_archive_data_sql(%s, '*',public.get_dcs_datetime_from_timestamp(%s),public.get_dcs_datetime_from_timestamp(%s))",(row,old_time,current_time)) 
while True: #Indefinite Loop 
    row2 = cur2.fetchone() 
    query2 = str(row2) 
    cur3.execute(query2) 

我似乎得到以下错误运行脚本时,

ProgrammingError: syntax error at or near "'SELECT * FROM historian._73b4f984f30b4c68a871fac1c53a1b8f_45907294814208000 WHERE archive_datetime BETWEEN 45907381384722560 AND 45907381384732560 ORDER BY archive_datetime;'" LINE 1: ('SELECT * FROM historian.73b4f984f30b4c68a871fac1c53a1b8f...

当我在PostgreSQL服务器上运行的查询,那么执行罚款。有人能帮我理解我做错了什么吗? 。谢谢。

如果你可以在问题中描述你的表模式,它会增加更多的清晰度。

可能错误可能是您用于字符串格式的以下参数之一是无。

(row,old_time,current_time) 

请检查您的代码是否解决相同的问题。

+0

找出问题所在,query2 = str(row2),将转换后的字符串括在单引号中。在将它传递给execute()以使sql查询正确执行之前,必须从字符串中去掉单引号。 – trance 2013-05-10 08:49:45