python - 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
解决方案
就像评论中有人说的那样,您需要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()
推荐阅读
- rust - 约束 Rust 方法以接受有效类型对的两个变量
- kubernetes - 批量删除 Kubernetes PVC ebs 卷
- weblogic12c - java.lang.LinkageError:加载程序约束违规:
- android - 如何全屏显示照片?
- regex - 正则表达式仅替换组
- antd - 是否可以自定义标题列以扩展antd表中的按钮?
- java - 计算字符串中的字符串数
- r - 使用 ID 将数据库中的名称作为列添加到数据框中(棒球 R)
- javascript - P5 JavaScript for loop 帮助换行
- android - 在深色主题中忽略材质 colorOnSurface