以下の内容はhttps://www.yokoyan.net/entry/2018/10/12/183250より取得しました。


【Python+Postgres】'int' object does not support indexingが発生したときの対処法。タプルの要素が1つの場合でもカンマが必要。

f:id:yokoyantech:20181012183231p:plain

はじめに

Psycopg2のmogrifyにint型の要素を1つ渡して、エスケープしたSQLを取得しようとしたらエラーになったのでメモ。

環境

  • AWS Lambda
  • Python3.6
  • PostgreSQL9.6

発生したエラー

"errorMessage": "'int' object does not support indexing",
"errorType": "TypeError

原因

タプルの要素が1つの場合の文法が誤っているため。具体的にはカンマがないため。

ダメな例

query = "DELETE FROM public.hoge WHERE hoge_id = %s"
values = (fuga.id)
sql = mogrify_query(cur, query, values)

処置

タプルの要素が1つでもカンマを付与する。公式ドキュメントにも記載がある通り、タプルを作るのはカンマ。丸括弧ではない。

なお、タプルを作るのはカンマであり、丸括弧ではありません。

4. 組み込み型 — Python 3.6.5 ドキュメント

修正例

query = "DELETE FROM public.hoge WHERE hoge_id = %s"
values = (fuga.id,)
sql = mogrify_query(cur, query, values)



以上の内容はhttps://www.yokoyan.net/entry/2018/10/12/183250より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14