MySQL中的python(?)占位符

时间:2017-02-08 16:32:42

标签: python mysql

我在python中使用(?)占位符有一个有效的MySQL查询,我的问题是当我在查询中添加一个WHERE子句时,有一个额外的占位符(?)SQL不会允许它,我想是因为它将占位符分组,因此不允许在where子句中允许第6个占位符。

这是我的代码段:

self.query.prepare("UPDATE tbl_dev (user_id, dev_ref,dev_mac,dev_ka_der_file_path,dev_ds_der_file_path,dev_type) VALUES (?,?,?,?,?,?) WHERE id=?;")
self.query.bindValue(0, userID)
self.query.bindValue(1, dev_id)
self.query.bindValue(2, dev_mac)
self.query.bindValue(3, dev_ka_cert)
self.query.bindValue(4, dev_ds_cert)
self.query.bindValue(5, dev_type)
self.query.bindValue(6, devID)

self.query.exec_()

基本上它除了最终的devID占位符之外都没有,因为我认为它将第6个(devID)与第一组占位符分组。这在Python / MySQL中是否可行?

1 个答案:

答案 0 :(得分:0)

@vkp指出的语法不正确,工作解决方案是使用select子句,update子句没有分组值。解决方案如下。

self.query.prepare("UPDATE tbl_dev SET user_id=?,dev_ref=?,dev_mac=?,dev_ka_der_file_path=?,dev_ds_der_file_path=?,dev_type=? WHERE id=?;")
self.query.bindValue(0, userID)
self.query.bindValue(1, dev_id)
self.query.bindValue(2, dev_mac)
self.query.bindValue(3, dev_ka_cert)
self.query.bindValue(4, dev_ds_cert)
self.query.bindValue(5, dev_type)
self.query.bindValue(6, devID)

self.query.exec_()