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を触っていないからかもしれませんが 😛