我一直关注SQLite tutorial上的Python文档,我设法创建了一个Employee表并写入了它。
import sqlite3
conn = sqlite3.connect('employee.db')
c = conn.cursor()
firstname = "Ann Marie"
lastname = "Smith"
email = "ams@cia.com"
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()
我一直在阅读Write-Ahead Logging,但我找不到解释如何实施它的教程。有人可以提供一个例子吗?
我注意到使用SQLite的Firefox会以这样的方式锁定文件:如果您在使用Firefox时尝试删除sqlite文件,它将无法说"文件已打开或正在使用"(或类似的东西),我该如何实现?我在Windows 10下运行Python。
答案 0 :(得分:0)
PRAGMA journal_mode documentation说:
如果无法更改日记帐模式,则返回原始日记帐模式。 [...]
另请注意,事务处于活动状态时无法更改journal_mode。
因此,您必须确保数据库库不会变得聪明且automatically starts a transaction。
答案 1 :(得分:0)
conn = sqlite3.connect('app.db', isolation_level=None)
将日志模式设置为 WAL:
conn.execute('pragma journal_mode=wal')
或者其他方式(只是展示如何关闭wal模式)
cur = conn.cursor()
cur.execute('pragma journal_mode=DELETE')