ProgrammingError: синтаксическая ошибка при выполнении запроса в python с использованием psycopg2 или рядом с ним

Я использую 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: syntax error at or near "'SELECT * FROM historian._73b4f984f30b4c68a871fac1c53a1b8f_45907294814208000 WHERE archive_datetime BETWEEN 45907381384722560 AND 45907381384732560 ORDER BY archive_datetime;'" LINE 1: ('SELECT * FROM historian.73b4f984f30b4c68a871fac1c53a1b8f...

Когда я запускаю запрос на сервере postgresql, он выполняется нормально. Может ли кто-нибудь помочь мне понять, что я делаю неправильно? . Спасибо.


person trance    schedule 10.05.2013    source источник


Ответы (1)


Было бы более ясно, если бы вы могли описать схему своей таблицы в вопросе.

Вероятной ошибкой может быть то, что любой из следующих параметров, которые вы используете для форматирования строки, равен None.

(row,old_time,current_time)

Пожалуйста, проверьте свой код, чтобы решить то же самое.

person Alagappan Ramu    schedule 10.05.2013
comment
Выяснил, в чем проблема, query2 = str(row2) заключал преобразованную строку в одинарные кавычки. Пришлось удалить одинарные кавычки из строки перед передачей ее в execute(), чтобы запрос sql выполнялся правильно. - person trance; 10.05.2013