首页 > 解决方案 > Python sqlite3更新语句未更新

问题描述

所以我有这个sql(它使用(1,1,1),因为我想消除它为OrderID(在这种情况下为1)采用错误参数的可能性),它使用的函数是下面显示。出于某种原因,它在运行时不返回错误,但不会更新表,即使它看起来与我代码中其他地方的 sql 相同,但工作正常。

除了 ID 之外,我的数据库中的字段都设置为文本......我认为这就是一切,提前感谢您的建议。

query("UPDATE Orders SET CustomerID = ?, OrderDate = ? WHERE OrderID = ?", (1, 1, 1))

def query(sql, data = None):
with sqlite3.connect("notDataBase1.db") as db:
    cursor = db.cursor()
    if data == None:
        cursor.execute(sql)
    else:
        cursor.execute(sql, data)
    results = cursor.fetchall()
    return results

标签: pythonpython-3.xsqlite

解决方案


就像评论中有人说的那样,您需要db.commit()在查询之后运行才能将事务写入数据库。您可以阅读文档以获取更多详细信息。您也不需要获取UPDATE查询。像这样的东西:

update("UPDATE Orders SET CustomerID = ?, OrderDate = ? WHERE OrderID = ?", (1, 1, 1))

def update(sql, data):
    with sqlite3.connect("notDataBase1.db") as db:
        cursor = db.cursor()
        cursor.execute(sql, data)
        db.commit()

推荐阅读