将 SQLite 与 WAL 结合使用

问题描述 投票:0回答:2

我一直在关注 SQLite 教程 上的 Python 文档,并成功创建了一个

Employee
表并写入其中。

import sqlite3
    
conn = sqlite3.connect('employee.db')
c = conn.cursor()
    
firstname = "Ann Marie"
lastname = "Smith"
email = "[email protected]"
    
employee = (email, firstname, lastname)
    
c.execute('INSERT INTO Employee Values (?,?,?)', employee)
conn.commit()
    
# Print the table contents
for row in c.execute("select * from Employee"):
    print(row)

conn.close()

我一直在阅读有关“预写式日志记录”的内容,但我找不到解释如何实现它的教程。有人可以举个例子吗 我注意到使用 SQLite 的 Firefox 以这样的方式锁定文件,如果您在使用 Firefox 时尝试删除 SQLite 文件,它将失败并显示“文件已打开或正在使用”(或类似的内容),我该如何操作达到这个目的吗?我在 Windows 10 下运行 Python。

python sqlite
2个回答
6
投票
将日志模式设置为WAL:

conn.execute('pragma journal_mode=wal')

或者另一种方式(仅展示如何关闭 wal 模式)

cur = conn.cursor() cur.execute('pragma journal_mode=DELETE')



-1
投票
PRAGMA Journal_mode 文档

说:

如果无法更改日志模式,则返回原始日志模式。 […]
另请注意,当事务处于活动状态时,journal_mode 无法更改。


所以你必须确保数据库库不会自作聪明
自动启动事务

© www.soinside.com 2019 - 2024. All rights reserved.