“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)
请检查您的代码是否解决相同的问题。
找出问题所在,query2 = str(row2),将转换后的字符串括在单引号中。在将它传递给execute()以使sql查询正确执行之前,必须从字符串中去掉单引号。 – trance 2013-05-10 08:49:45