MySQL 中的 python (?) 占位符

标签 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 中甚至可能吗?

最佳答案

@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_()

关于MySQL 中的 python (?) 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118628/

相关文章:

python - 如何在 Python 中可靠地处理网络数据

android - 插入MySQL时部分数据丢失

php - 自定义字段不保存到 MySQL

mysql - EF Core 2 停止对多对多关系的循环依赖

python - 如何通过 Python 使用 sftp 和 mput?

python - 调整视频大小时的音频问题 - moviepy

python - 在我使用 PyInstaller 将 PY 转换为 EXE 后,它抛出错误

php - 加密电子邮件、散列密码并将其存储在数据库中?

mysql - 在 hasMany 关联上双重 JOIN 和 GROUP

python - 如何在Python中分析列?