使用 psycopg2 在 python 中执行查询时出现“ProgrammingError:在或附近出现语法错误”
Posted
技术标签:
【中文标题】使用 psycopg2 在 python 中执行查询时出现“ProgrammingError:在或附近出现语法错误”【英文标题】:"ProgrammingError: syntax error at or near" when executing query in python using psycopg2 【发布时间】:2013-05-10 07:51:12 【问题描述】:我正在运行 Python v 2.7 和 psycopg2 v 2.5 我有一个 postgresql 数据库函数,它返回一个 sql 查询作为文本字段。
我正在使用以下代码调用该函数并从文本字段中提取查询。
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:“'SELECT * FROM”处或附近的语法错误 历史学家._73b4f984f30b4c68a871fac1c53a1b8f_45907294814208000 在哪里 archive_datetime 介于 45907381384722560 和 45907381384732560 之间 BY archive_datetime;'" LINE 1: ('SELECT * FROM 历史学家。73b4f984f30b4c68a871fac1c53a1b8f...
当我在 postgresql 服务器上运行查询时,它执行得很好。有人可以帮我理解我做错了什么吗? .谢谢。
【问题讨论】:
【参考方案1】:如果您可以在问题中描述您的表架构,它会更加清晰。
可能的错误是您用于字符串格式化的以下任一参数为无。
(row,old_time,current_time)
请检查您的代码以解决相同问题。
【讨论】:
找出问题所在,query2 = str(row2) 将转换后的字符串括在单引号中。必须在将字符串传递给 execute() 之前从字符串中去除单引号,以使 sql 查询正确执行。以上是关于使用 psycopg2 在 python 中执行查询时出现“ProgrammingError:在或附近出现语法错误”的主要内容,如果未能解决你的问题,请参考以下文章
Psycopg2 在 postgres 数据库中插入 python 字典
无法使用 Psycopg2 在 Amazon Redshift 中创建表
Django 在执行 python manage.py runserver-“raise ImproperlyConfigured("Error loading psycopg2 modul