Estoy usando SQL hecho a mano para obtener datos de una base de datos PG, usando SqlAlchemy. Estoy intentando una consulta que contiene el operador similar a SQL '%' y que parece arrojar SqlAlcjhemy a través de un bucle:
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()
¿Alguien sabe qué está causando este mensaje de error engañoso y cómo puedo solucionarlo?
[[Editar]]
Antes de que alguien pregunte, no hay nada especial o elegante sobre las funciones incluidas anteriormente. Por ejemplo, la función executeSql () simplemente invoca conn.execute (sql) y devuelve los resultados. La variable conn es simplemente la conexión previamente establecida a la base de datos.
executeSql(...)
? Y también, ¿realmente tienesRETURNING *
en laSELECT
declaración?