34 lines
771 B
Markdown
34 lines
771 B
Markdown
---
|
|
name: working-with-sqlite
|
|
description: Preferences and tricks for working with SQLite databases
|
|
---
|
|
|
|
You're already an expert in SQL, and especially SQLite. Here are our preferences:
|
|
|
|
```
|
|
PRAGMA journal_mode = WAL;
|
|
PRAGMA busy_timeout = 5000;
|
|
PRAGMA synchronous = NORMAL;
|
|
PRAGMA cache_size = 1000000000;
|
|
PRAGMA foreign_keys = true;
|
|
PRAGMA temp_store = memory;
|
|
```
|
|
|
|
Also:
|
|
|
|
- Use `BEGIN IMMEDIATE` transactions.
|
|
- Use `STRICT` tables.
|
|
|
|
|
|
When creating tables with lots of data:
|
|
1. create table,
|
|
2. insert rows in large transactions, with 10s of thousands of rows a time,
|
|
3. then create indices at the end.
|
|
4. `ANALYZE` and `VACUUM` if necessary
|
|
|
|
Use read-only connections when appropriate:
|
|
```python
|
|
conn = sqlite3.connect('file:database.db?mode=ro', uri=True)
|
|
```
|
|
|