如何锁定整个 SQLite 连接(锁定读取 + 锁定写入)?

How do I lock an entire SQLite connection (locked read + locked write)?

我有一个正在被并发访问的 sqlite3 数据库。我有 ClientA 读取某些 table 的状态(第 1 列有行 ABC) 并且需要用字母表中的新字母更新 table。如果 ClientBClientA 更新 table 之前读取 table 的状态(比如使用新字母 D),那么它是可能两个客户端都可以(在我的情况下 do)将 D 写入 table - 这样 Column1 就变成 A, B, C, D, D 。但我需要确保 Column1 只有唯一字母!

如何锁定数据库连接以使其读写操作获得独占访问权限,从而使 Column1 不会在其他读写周期之间意外更改状态?

很难在网上找到关于 "locking a sqlite read" 的任何信息,因为每个人似乎都对解锁数据库更感兴趣。下面好像没有给出con的读操作exclusive access

con = sqlite3.connect(db, isolation_level='EXCLUSIVE', timeout=10)

相关:

仅仅设置隔离级别是不够的。您还必须将您的独家声明放入交易中:

con = sqlite3.connect(db, isolation_level='EXCLUSIVE', timeout=10)
con.execute('BEGIN EXCLUSIVE')
# Exclusive access here; no other transaction can access the database.
# 1. Check for presence of letter
# 2. Add the letter if it doesn't exist
con.commit()
con.close()