python - SQLite 数据库被 SELECT 子句锁定

标签 python sqlite

我有一个 python 脚本,它创建一个数据库,然后进入一个无限循环,该循环每秒运行一次,通过一些选择查询数据库。

同时,我使用 sqlite cli 连接到数据库并尝试进行更新,但我得到一个数据库被锁定的错误。

这里是脚本的(匿名)代码:

import sqlite3
import time

con = sqlite3.connect(r'path\to\database.sqlite')

con.execute('DROP TABLE IF EXISTS blah;')
con.execute('CREATE TABLE blah;')
con.execute('INSERT INTO blah;')

con.commit()

while True:
    result = con.execute('SELECT blah')
    print(result.fetchone()[0])
    time.sleep(1)

最佳答案

Python的sqlite3模块试图变得聪明和manages transactions for you .

为确保您可以从其他线程/进程访问数据库,请禁用它(将 isolation_level 设置为 None),并在需要时使用显式事务。
或者,调用con.commit()每当你完成。

关于python - SQLite 数据库被 SELECT 子句锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36129870/

相关文章:

c++ - "system(...)"在 C++ 中有什么作用?

python - 从数字列表生成 "efficent"编码

python - MacOS:如何降级 Homebrew Python?

javascript - Chrome 扩展 SQLite 自版本 60 : Iterator getter is not callable 起失败

Android SQLite SELECT WHERE LIKE 意外行为

python - 哪些 GTK+ 元素支持哪些 CSS 属性?

python - 撤消和重做 Tkinter 文本小部件中的功能?

php - 使 SQLITE 触发器与 MYSQL 一起工作

sql - 如何编写 SQLite 代码以显示指定代码及其来自 group_concat 函数的关联代码?

SQLite 调用未定义函数 sqlite_open() 的 PHP 问题