Ich verwende handgefertigtes SQL, um mithilfe von SqlAlchemy Daten aus einer PG-Datenbank abzurufen. Ich versuche eine Abfrage, die den SQL-ähnlichen Operator '%' enthält und SqlAlcjhemy durch eine Schleife zu werfen scheint:
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()
Weiß jemand, was diese irreführende Fehlermeldung verursacht und wie ich sie beheben kann?
[[Bearbeiten]]
Bevor jemand fragt, gibt es nichts Besonderes oder Besonderes an den oben enthaltenen Funktionen. Zum Beispiel ruft die Funktion executeSql () einfach conn.execute (sql) auf und gibt die Ergebnisse zurück. Die Variable conn ist einfach die zuvor hergestellte Verbindung zur Datenbank.
executeSql(...)
? Und auch, hast du wirklichRETURNING *
in derSELECT
Aussage?