【问题标题】:I get psycopg2 syntax error at end of input when executing执行时输入结束时出现 psycopg2 语法错误
【发布时间】:2023-03-18 01:33:02
【问题描述】:

我在执行查询时在输入结束时收到 psycopg2 语法错误,但我无法弄清楚。我试图在执行函数中编写查询,因为它没有帮助。 我在网上搜索了我的案例的解决方案,但没有任何帮助..

错误是: "" "" 处或附近的语法错误 第 1 行:...“WHERE first_name = 'Eyal'”... ^

select_query = """ SELECT first_name, value " \
                         "FROM PATIENTS " \
                         " WHERE first_name = %s " \
                         " AND valid_start_time IN (SELECT MAX(valid_start_time) " \
                                                    " FROM PATIENTS " \
                                                    " WHERE first_name = %s AND " \
                                                    " valid_start_time::DATE = %s " \
                                                    " AND transaction_time::DATE < %s """


          cursor.execute(select_query, (first_name, first_name, wanted_date[0], prespective_date,))

【问题讨论】:

    标签: python sql postgresql psycopg2


    【解决方案1】:

    您的查询缺少最后一个右括号(将关闭SELECT MAX(...) 子查询的那个),因此“输入末尾的语法错误”。

    select_query = """
    SELECT first_name, value
    FROM PATIENTS
    WHERE first_name = %s AND valid_start_time IN (
      SELECT MAX(valid_start_time)
      FROM PATIENTS
      WHERE first_name = %s AND valid_start_time::DATE = %s AND transaction_time::DATE < %s
    )
    """
    

    应该会更好(如果你问我,使用单个 """ 字符串更具可读性)。

    【讨论】:

    • 我不敢相信我没有看到它!非常感谢:)
    猜你喜欢
    • 2021-07-11
    • 2012-10-18
    • 1970-01-01
    • 2013-10-07
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多