Python 3.x 如何使用QSqlQuery创建更新查询
我试图在Python3/PyQt5.10/Sqlite中创建一个更新查询。以相同方式进行的选择/插入查询运行良好。存在字段和相应的记录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
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