Używam ręcznie spreparowanego języka SQL do pobierania danych z bazy danych PG przy użyciu SqlAlchemy. Próbuję zapytać, które zawiera operator podobny do SQL „%” i wydaje się, że SqlAlcjhemy przechodzi przez pętlę:
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()
Czy ktoś wie, co powoduje ten mylący komunikat o błędzie i jak mogę to naprawić?
[[Edytować]]
Zanim ktoś zapyta, nie ma nic specjalnego ani wyszukanego w funkcjach opisanych powyżej. Na przykład funkcja executeSql () po prostu wywołuje conn.execute (sql) i zwraca wyniki. Zmienna conn to po prostu wcześniej nawiązane połączenie z bazą danych.
executeSql(...)
? A także, czy naprawdę masz toRETURNING *
wSELECT
oświadczeniu?