Как разрешить SyntaxError: неожиданный символ после символа продолжения строки в prestodb в Linux? - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно получить данные из базы данных, где id_1 начинается с E. Код работал нормально, прежде чем я добавил предложение Where для вышеуказанного constarint

sql = "select inserted_at, id1, id2, id3 from data where inserted_at<=" + str(start_date_time) + " and " \
                       "inserted_at>=" + str(end_date_time) + " " \ 
                       "and" "where id1 like %E%"

Я получаю эту ошибку.

"inserted_at>=" + str(end_date_time) + " " \ 
                                                ^
SyntaxError: unexpected character after line continuation character

1 Ответ

1 голос
/ 01 июля 2019

Реальная проблема вызвана размещением в вашем запросе встроенных литералов даты / даты и времени. Вы могли бы решить эту непосредственную проблему, поместив одинарные кавычки вокруг start_date_time, но лучшим долгосрочным решением было бы использование подготовленного выражения:

sql = "select inserted_at, id1, id2, id3 from data where inserted_at between ? and ? and id1 like '%E%'"
cur = conn.cursor()
cur.execute(sql, (start_date_time, end_date_time,))
...