psycopg2でのプレースホルダーのエラー

Python2.7でpsycopg2を使っていたところ、プレースホルダーにつまづきました。

psycopg2.connect(...).cursor().execute(
  "INSERT INTO %s (column1, column2) VALUES (%s, %s)" % (table, val1, val2)
)

上記のように%s(モジュロ、補間演算子というらしい)で
タプルを置換しようとしたところ、

psycopg2.ProgrammingError: syntax error at or near

上記のようなエラーが発生しました。
stack overflowに同じような状況の質問がありましたが、
これでは解決できず :'<

一応下記のようにクエリを一度変数に代入したところ、
うまくうごきました。

query = "INSERT INTO %s (column1, column2) VALUES (%s, %s)" % (table, val1, val2)
psycopg2.connect(...).cursor().execute( query )

ただしPython2.6からはstr.format()という関数があるようで、
個人的にはこっちの方が直感的でわかりやすいように感じます。
あまりPythonを触っていないからかもしれませんが 😛


投稿日

カテゴリー:

投稿者:

タグ: