Я получаю синтаксическую ошибку psycopg2 в конце ввода при выполнении

#python #sql #postgresql #psycopg2

Вопрос:

Я получаю синтаксическую ошибку psycopg2 в конце ввода при выполнении запроса, и я не могу ее понять. Я попытался написать запрос внутри функции выполнения, но это не помогло. Я искал решение для своего случая в Интернете, но ничего не помогло..

ОШИБКА : синтаксическая ошибка в СТРОКЕ 1 или рядом с»»»»:… «, ГДЕ 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 lt; %s """    cursor.execute(select_query, (first_name, first_name, wanted_date[0], prespective_date,))  

Ответ №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 lt; %s ) """  

должно работать лучше (и использование одной """ строки более читабельно, если вы спросите меня).

Комментарии:

1. Не могу поверить, что я этого не видел! Большое вам спасибо 🙂