Python 3.x 如何使用QSqlQuery创建更新查询

Python 3.x 如何使用QSqlQuery创建更新查询,python-3.x,sqlite,pyqt5,Python 3.x,Sqlite,Pyqt5,我试图在Python3/PyQt5.10/Sqlite中创建一个更新查询。以相同方式进行的选择/插入查询运行良好。存在字段和相应的记录 def updateRecords(): theDict = { "Loc": "PyQt121", "BoekNr" : "dfdf", "BoekTitel" : "eeee", "BoekBedrag" : 999 } theFilter = " WHERE Loc

我试图在Python3/PyQt5.10/Sqlite中创建一个更新查询。以相同方式进行的选择/插入查询运行良好。存在字段和相应的记录

def updateRecords():

    theDict = {
        "Loc": "PyQt121",
        "BoekNr" : "dfdf",
        "BoekTitel" : "eeee",
        "BoekBedrag" : 999
    }
    theFilter = " WHERE Loc = 'PyQt'"

    query = QSqlQuery()
    columns = ', '.join(pDict.keys())
    placeholders = ':'+', :'.join(pDict.keys())

    sql = 'UPDATE  %s SET (%s) VALUES (%s)  %s' % (pTable, columns, placeholders, pFilter)      

    query.prepare(sql)

    for key, value in pDict.items():
        query.bindValue(":"+key, value)
    print (sql)
    query.exec_()
    print(query.lastError().databaseText())
    return query.numRowsAffected()
生成的sql是更新tempbooks集(Loc、BoekNr、BoekTitel、BoekBedrag)值(:Loc、:BoekNr、:BoekTitel、:BoekBedrag),其中Loc='PyQt'。
query.lastError().databaseText()为“无查询”,更新的行为-1。

更新查询的正确语法:

UPDATE tablename
set col1 = val1,
col2 = val2,
col3 = val3
WHERE condition

可能
query.prepare(sql)
由于语法无效而返回False。

更新查询的正确语法:

UPDATE tablename
set col1 = val1,
col2 = val2,
col3 = val3
WHERE condition
由于语法无效,query.prepare(sql)可能返回False