显式锁定数据库的方法是启动一个事务,如文档中所述:
当一个数据库被多个连接访问,并且其中一个进程修改了该数据库时,SQLite 数据库将被锁定,直到该事务被提交。
启动事务的一种方法是使用连接作为上下文管理器:
import sqlite3
con = sqlite3.connect(...)
...
with con:
# Database is locked here
Run Code Online (Sandbox Code Playgroud)
另请注意,默认情况下某些交易是隐式发生的:
默认情况下,sqlite3 模块在数据修改语言 (DML) 语句(即 INSERT/UPDATE/DELETE/REPLACE)之前隐式打开事务,并在非 DML、非查询语句(即除 SELECT 或之前所提)。
来自 sqlite FAQ,“多个应用程序或同一应用程序的多个实例可以同时访问单个数据库文件吗? ”:
多个进程可以同时打开同一个数据库。多个进程可以同时执行 SELECT。但在任何时刻,只有一个进程可以对数据库进行更改。
无论您是否使用该with connection构造,在任何给定时间,许多进程都可以读取数据库,而只有一个进程可以写入数据库。
| 归档时间: |
|
| 查看次数: |
10997 次 |
| 最近记录: |