首页 > 解决方案 > 为什么在这个简单的 python sqlite3 更新查询代码上出现“数据库已锁定”错误?

问题描述

我所做的每个 SQLITE 查询通常都很顺利,但我似乎无法更新数据库。

db = sqlite3.connect("data.db")
cursor = db.cursor()
str_datetime = str(datetime.datetime.now())
cursor.execute("""UPDATE ads SET publish_end_datetime = ? WHERE ad_code = ?""", (str_datetime, 1411671200))
db.commit() # is this commit statement even necessary?
db.close()

我收到以下操作错误:

OperationalError Traceback (last last call last) in () 3 str_datetime = str(datetime.datetime.now()) 4 ----> 5 cursor.execute("""UPDATE ads SET publish_end_datetime = ? WHERE ad_code = ?"" ", (str_datetime, 1411671200)) 6 db.commit() 7 db.close()

OperationalError:数据库已锁定

标签: pythonsqlite

解决方案


我想我找到了问题所在。每当使用 DB 时,都会在同一位置创建一个 database.db-journal 文件。这是数据库正在使用的主要指标。我还没有找到什么在“使用”我的数据库,但我已经找到了解决问题的方法。看来 OneDrive 可能是问题所在。我在桌面上复制了我的 data.db,在 OneDrive 之外,我终于能够让更新语句正常工作。

我希望它可以帮助其他人。


推荐阅读