Estou usando o SQL artesanal para buscar dados de um banco de dados PG, usando SqlAlchemy. Estou tentando uma consulta que contém o SQL como operador '%' e que parece lançar SqlAlcjhemy através de um loop:
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()
Alguém sabe o que está causando essa mensagem de erro enganosa e como posso corrigi-la?
[[Editar]]
Antes que alguém pergunte, não há nada de especial ou sofisticado nas funções incluídas acima. Por exemplo, a função executeSql () chama simplesmente conn.execute (sql) e retorna os resultados. A variável conn é simplesmente a conexão estabelecida anteriormente com o banco de dados.
executeSql(...)
? E também, você realmente temRETURNING *
naSELECT
declaração?