Python SQLite数据库被SELECT子句锁定
我有一个python脚本,它创建一个数据库,然后进入一个无限循环,该循环每秒运行一次,通过一些选择查询数据库 同时,我使用sqlite cli连接到数据库,并尝试进行更新,但发现数据库被锁定错误 这里是脚本的(匿名)代码: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
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子句。