#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. Не могу поверить, что я этого не видел! Большое вам спасибо 🙂