私はSqlAlchemyを使用して手作りのSQLを使用してPGデータベースからデータを取得しています。私は「%」演算子のようなSQLを含むクエリをしようとしていますし、それがループをSqlAlcjhemyを投げるようだ:奇妙なSQLAlchemyエラーメッセージ:TypeError: 'dict'オブジェクトがインデックス処理をサポートしていません
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()
いずれかが、この誤解を招くようなエラー・メッセージの原因となっているものと私はそれを修正する方法を知っていますか?
[[編集]]
いずれかを尋ねる前に、特別または上記に含ま機能についての空想は何もありません。たとえば、関数executeSql()は単にconn.execute(sql)を呼び出して結果を返します。変数connは、単に以前に確立されたデータベースへの接続です。
あなたは 'executeSql(...)'のコードを投稿できますか?また、実際には 'SELECT'ステートメントに' RETURNING * 'がありますか? – van
@van私はそれを逃した。問題の原因となっているSQLには「RETURNING *」はありません。私はその問題を訂正します。 –
はこの回答です[http://stackoverflow.com/questions/3944276/psycopg2-using-wildcard-causes-typeerror]役立ちますか? – van