Sto usando SQL artigianale per recuperare i dati da un database PG, usando SqlAlchemy. Sto provando una query che contiene l'operatore simile a SQL '%' e che sembra lanciare SqlAlcjhemy in un ciclo:
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()
Qualcuno sa cosa sta causando questo messaggio di errore fuorviante e come posso risolverlo?
[[Modificare]]
Prima che qualcuno lo chieda, non c'è nulla di speciale o di fantasia nelle funzioni incluse sopra. Ad esempio, la funzione executeSql () richiama semplicemente conn.execute (sql) e restituisce i risultati. La variabile conn è semplicemente la connessione precedentemente stabilita al database.
executeSql(...)
? E inoltre, hai davveroRETURNING *
nellaSELECT
dichiarazione?