Python SQLite数据库被SELECT子句锁定

Python SQLite数据库被SELECT子句锁定,python,sqlite,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('CREA

我有一个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
模块试图变得更聪明、更安全

要确保可以从其他线程/进程访问数据库,请禁用该选项(将隔离级别设置为无),并在需要时使用显式事务。
或者,无论何时完成,都可以调用
con.commit()

您可能希望在
fetchone
result.close()
@JoachimIsaksson之后关闭光标。我担心它不起作用。CL.下面的回答可能会有所帮助,但不知道内置的事务管理。我尝试了隔离级别的“技巧”在我问起这件事之前,很抱歉我没有提到它。正如您在创建数据库后提交的代码中所看到的,在循环中,我只使用不需要提交的SELECT子句。