我在 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 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 ''artikel' ('REC_ID', 'odoo_created') 附近使用的正确语法\n
VALUES ('48094', '2014-12-' 在第 1 行")
在我看来,PyMySQL 在格式化期间转义了所有字符串。对于表名和列名等数据库标识符,如何防止这种情况发生?它破坏了语句,因为与表 ( ) 相比,SELECT
字符串文字 ( SELECT * FROM "table"
) 中的 s 是不可能的SELECT * FROM table
。