如何使用QSqlQuery创建更新查询

时间:2019-05-14 09:06:02

标签: python-3.x sqlite pyqt5

我正在尝试在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是UPDATE临时手册集(Loc,BoekNr,BoekTitel,BoekBedrag)值(:Loc,:BoekNr,:BoekTitel,:BoekBedrag)WHERE Loc ='PyQt'。 query.lastError()。databaseText())给我“无查询”,更新的行为-1。

1 个答案:

答案 0 :(得分:0)

更新查询的正确语法:

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

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