2017-02-08 4 views
1

Ich habe eine funktionierende MySQL-Abfrage in Python mit (?) Platzhalter, mein Problem ist, wenn ich eine WHERE-Klausel in der Abfrage hinzufügen, mit einem zusätzlichen Platzhalter (?) SQL nicht zulassen Ich denke, weil es Platzhalter gruppiert, so wird der 6. Platzhalter in der WHERE-Klausel nicht zulassen.Python (?) Platzhalter in MySQL

Hier ist mein Code-Schnipsel:

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

Grundsätzlich wird es nicht die letzte Devid Platzhalter außer wie ich es die Gruppierung der 6. denken (Devid) mit der ersten Gruppe von Platzhalter. Ist das in Python/MySQL überhaupt möglich?

+1

Ihre "update" -Syntax ist inkorrekt..Es sollte keine "Werte" -Spezifikation geben. –

+0

Danke vkp, meine anfängliche Arbeitslösung war für eine 'Select'-Klausel, danke für das Hinweis auf die SQL-Syntax – MikG

Antwort

0

Es gibt eine falsche Syntax wie von @vkp angegeben, die Arbeitslösung war mit einer SELECT-Klausel, mit einer Update-Klausel gibt es keine gruppierten Werte. Lösung ist unten.

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_() 
Verwandte Themen