Estoy utilizando SQL hecho a mano para obtener datos de una base de datos PG, utilizando SqlAlchemy. Estoy tratando una consulta SQL que contiene el operador como '%' y que parece arrojar SqlAlcjhemy través de un bucle:Mensaje de error Strange SQLAlchemy: TypeError: el objeto 'dict' no es compatible con la indexación
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()
Cualquiera sabe lo que está causando este mensaje de error equivocado y cómo puedo solucionarlo?
[[Editar]]
Antes cualquiera pregunta, no hay nada especial o de fantasía acerca de 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.
puede publicar el código de 'executeSql (...)'? Y también, ¿realmente tienes 'RETURNING *' en la instrucción 'SELECT'? – van
@van Me perdí esa. No hay 'DEVOLUCIÓN *' en el SQL que está causando el problema. Voy a corregir la pregunta. –
es útil esta respuesta [http://stackoverflow.com/questions/3944276/psycopg2-using-wildcard-causes-typeerror]? – van