私は Python 2.7で PyMySQL を利用しており、次のステートメントを実行しようとしています。
'INSERT INTO %s (%s, %s) VALUES (%s, %s) ON DUPLICATE KEY UPDATE %s = %s'
次のパラメータを使用します。
('artikel', 'REC_ID', 'odoo_created', u'48094', '2014-12-23 10:00:00', 'odoo_modified', '2014-12-23 10:00:00')
常に次のようになります。
{ProgrammingError}(1064, u"SQL 構文にエラーがあります。''artikel' ('REC_ID', 'odoo_created') の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください\n
VALUES ('48094', '2014-12-' at line 1")
PyMySQL がフォーマット中にすべての文字列をエスケープしているように思えます。テーブル名や列名などのデータベース識別子でそれを防ぐにはどうすればよいですか? SELECT
文字列リテラル ( SELECT * FROM "table"
) からの s は、テーブル ( ) と比較して不可能であるため、ステートメントが破損しSELECT * FROM table
ます。