Initial commit
This commit is contained in:
33
skills/working-with-sqlite/SKILL.md
Normal file
33
skills/working-with-sqlite/SKILL.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
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)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user