J'utilise SQL fabriqué à la main pour récupérer des données à partir d'une base de données PG, en utilisant SqlAlchemy. J'essaie une requête qui contient le SQL comme l'opérateur '%' et qui semble lancer SqlAlcjhemy à travers une boucle:
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()
Quelqu'un sait ce qui cause ce message d'erreur trompeur et comment je peux le réparer?
[[Éditer]]
Avant que quiconque ne demande, il n'y a rien de spécial ou de fantaisie dans les fonctions incluses ci-dessus. Par exemple, la fonction executeSql () appelle simplement conn.execute (sql) et renvoie les résultats. La variable conn est simplement la connexion précédemment établie à la base de données.
executeSql(...)
? Et aussi, avez-vous vraimentRETURNING *
dans laSELECT
déclaration?