Я использую созданный вручную 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
заявлении?