Sqlite-Worker is a Python package providing a thread-safe interface for SQLite database operations. It ensures safe concurrent access to SQLite databases and simplifies executing database queries from different threads.
- Thread-safe SQLite database operations
- Queue-based query execution
- Simple and easy-to-use API
- Initialization actions executed once upon database connection
- Regular commits for continuous query streams
To install, run:
pip3 install sqlite-worker
To create a basic instance of Sqlite3Worker by specifying the path to your SQLite database file:
from sqlite_worker import SqliteWorker
worker = SqliteWorker("/path/to/your/database.db")
Create a SqliteWorker
instance with initialization actions (such as setting pragmas):
from sqlite_worker import SqliteWorker
init_actions = [
"PRAGMA journal_mode=WAL;",
"PRAGMA synchronous=NORMAL;",
"PRAGMA temp_store=MEMORY;"
]
worker = SqliteWorker("/path/to/your/database.db", execute_init=init_actions)
Create a SqliteWorker instance with initialization actions and set a maximum query count for regular commits:
from sqlite_worker import SqliteWorker
init_actions = [
"PRAGMA journal_mode=WAL;",
"PRAGMA synchronous=NORMAL;",
"PRAGMA temp_store=MEMORY;"
]
worker = SqliteWorker("/path/to/your/database.db", execute_init=init_actions, max_count=50)
worker.execute("CREATE TABLE example (id INTEGER PRIMARY KEY, name TEXT)")
worker.execute("INSERT INTO example (name) VALUES (?)", ("Alice",))
token = worker.execute("SELECT * FROM example")
results = worker.fetch_results(token)
print(results)
After completing all database operations, close the worker to ensure proper cleanup:
worker.close()
Contributions to the Sqlite-Worker are welcome! Please refer to the project's issues and pull request sections for contributions.
Special thanks to Johannes Ahlmann for their valuable suggestion on initializing actions and implementing regular commits.