Saving an in-memory SQLite database to a file in Python

I was messing around in Python with an in-memory SQLite database, when I decided I actually wanted to save my experimental database to a file so I could explore it using Datasette.

In-memory databases can be created using sqlite3 like this:

import sqlite3

db = sqlite.connect(":memory:")

Or with sqlite-utils like this:

import sqlite_utils

db = sqlite_utils.Database(memory=True)

The VACUUM INTO command can be used to save a copy of the database to a new file. Here's how to use it:

import sqlite3

db = sqlite3.connect(":memory:")
db.execute("create table foo (bar text)")

db.execute("vacuum main into '/tmp/saved.db'")

# Or with sqlite-utils
import sqlite_utils

db = sqlite_utils.Database(memory=True)

db["foo"].insert({"bar": "Example record"})

db.execute("vacuum main into '/tmp/saved2.db'")

Created 2023-04-08T17:15:54-07:00 · Edit