Я використовую вручну створений SQL для отримання даних із бази даних PG, використовуючи SqlAlchemy. Я намагаюся отримати запит, який містить оператор SQL, подібний оператору "%", і, здається, кидає SqlAlcjhemy через цикл:
sql = """
SELECT DISTINCT u.name from user u
INNER JOIN city c ON u.city_id = c.id
WHERE c.designation=upper('fantasy')
AND c.id IN (select id from ref_geog where short_name LIKE '%opt')
"""
# The last line in the above statement throws the error mentioned in the title.
# However if the last line is change to:
# AND c.id IN (select id from ref_geog where short_name = 'helloopt')
# the script runs correctly.
#
# I also tried double escaping the '%' i.e. using '%%' instead - that generated the same error as previously.
connectDb()
res = executeSql(sql)
print res
closeDbConnection()
Хтось знає, що викликає це оманливе повідомлення про помилку, і як я можу це виправити?
[[Редагувати]]
Перш ніж хтось запитає, немає нічого особливого або фантазійного щодо функцій, включених вище. Наприклад, функція ExecuteSql () просто викликає conn.execute (sql) і повертає результати. Змінна conn - це просто встановлене раніше з'єднання з базою даних.
executeSql(...)
? А також, чи справді ви маєтеRETURNING *
вSELECT
заяві?