1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
880 B
Python

import sqlite3
import shutil
import os
# Database file
db_file = 'mydatabase.db'
# Open a connection to SQLite database
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
# Enable WAL mode and disable automatic checkpointing
cursor.execute("PRAGMA journal_mode=WAL;")
cursor.execute("PRAGMA wal_autocheckpoint=0;")
cursor.execute("CREATE TABLE foo (id INTEGER PRIMARY KEY, value TEXT);")
conn.commit()
# Checkpoint the WAL file so we've got just a SQLite file
conn.execute("PRAGMA wal_checkpoint(TRUNCATE);")
shutil.copy(db_file, 'backup.db')
for i in range(0, 4):
# Write a new row
cursor.execute(f"INSERT INTO foo (value) VALUES ('Row {i}');")
conn.commit()
# Copy the newly-created WAL
shutil.copy(db_file + '-wal', f'wal-{i:02}')
# Checkpoint the WAL file
conn.execute("PRAGMA wal_checkpoint(TRUNCATE);")
conn.commit()
conn.close()