我正在使用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服务器版本手册以获取正确的语法,以在行1处使用“'artikel'('REC_ID','odoo_created')\ n
VALUES('48094','2014-12-'")
这似乎是PyMySQL在格式化期间对所有字符串进行转义。我如何防止对于表和列名等数据库标识符的转义?这会损坏语句,因为与表(SELECT * FROM table
)相比,无法从字符串字面值(SELECT * FROM "table"
)中选择。
{}
)在Python 2.7中对我无效。在命令行中进行的“herp {}”%(“derp”)的简单测试产生了相同的结果。但是,使用%s可以正常工作。 - Peter"{}".format
和"%s"%
是不同的东西。 - Oleh PrypinTypeError
问题的原因:在一个堆栈帧中,由于使用了*args
,参数被塞进了一个元组中。 - Peter?sort=foo
这样的URL中获取的ORDER BY {sort}'.format(sort=sort)
。 - six8