【问题标题】:How to create update query with QSqlQuery如何使用 QSqlQuery 创建更新查询
【发布时间】:2019-10-01 06:09:04
【问题描述】:

我正在尝试在 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 tempbooks SET (Loc, BoekNr, BoekTitel, BoekBedrag) VALUES (:Loc, :BoekNr, :BoekTitel, :BoekBedrag) WHERE Loc = 'PyQt'。 query.lastError().databaseText()) 给我“No Query”并且更新的行是-1。

【问题讨论】:

    标签: python-3.x sqlite pyqt5


    【解决方案1】:

    更新查询的正确语法:

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多