使用 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“选择更新”

Psycopg2 在 postgres 数据库中插入 python 字典

无法使用 Psycopg2 在 Amazon Redshift 中创建表

从执行存储过程的psycopg2游标中获取列名列表?

Django 在执行 python manage.py runserver-“raise ImproperlyConfigured("Error loading psycopg2 modul

如何在 Mac 上安装 psycopg2(未找到 pg_config 可执行文件错误)