simple DAO builder and abstraction for sqlite
Project description
SqliteDao
A simplified DAO for SQL abstraction for personal projects.
pip install sqlitedao
Demo project: sqlite_img_app
Examples
Create Table easily:
from sqlitedao import SqliteDao
dao = SqliteDao.get_instance(DB_PATH)
create_table_columns = {
"name": "text",
"position": "text",
"age": "integer",
"height": "text"
}
dao.create_table(TEST_TABLE_NAME, create_table_columns)
Or with a bit more control:
from sqlitedao import ColumnDict
columns = ColumnDict()
columns\
.add_column("name", "text", "PRIMARY KEY")\
.add_column("position", "text")\
.add_column("age", "integer")\
.add_column("height", "text")
create_table_indexes = {
"name_index": ["position"]
}
dao.create_table(TEST_TABLE_NAME, columns, create_table_indexes)
Retrieve items as a list of python dictionaries:
from sqlitedao import SearchDict
search = SearchDict().add_filter("age", 50, operator=">")
rows = xdao.search_table(TEST_TABLE_NAME, search)
# [{"name": "Michael Jordan", "position": "SG", "age": 56, "height": "6-6"}]
Create DAO classes by inheriting TableItem easily and deal with less code:
from sqlitedao import TableItem, SearchDict
class Player(TableItem):
TABLE_NAME = TEST_TABLE_NAME
INDEX_KEYS = ["name"]
ALL_COLUMNS = {
"name": str,
"position": str,
"age": int,
"height": str
}
def __init__(self, row_tuple=None, **kwargs):
super().__init__(row_tuple, **kwargs)
self.load_tuple()
def load_tuple(self):
self.name = self.row_tuple["name"]
self.position = self.row_tuple["position"]
self.age = self.row_tuple["age"]
self.height = self.row_tuple["height"]
def grow(self):
self.age += 1
self.row_tuple['age'] += 1
# Perform DAO action with above structured class
dao.insert_item(item)
dao.insert_items(items)
dao.update_item(changed_item)
dao.update_items(changed_items)
dao.find_item(item_with_only_index_populated)
# Pagination with sqlite is easier than ever!
old = SearchDict().add_filter("age", 35, ">")
old_team_1 = dao.get_items_page(Player, old, None, limit = 10)
old_team_2 = dao.get_items_page(Player, old, old_team_1[-1], limit = 10)
see test files for more examples. This can greatly simplify and ease the creation cost for pet projects based on sqlite.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sqlitedao-0.8.0.tar.gz.
File metadata
- Download URL: sqlitedao-0.8.0.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09986463f9516274b23507a31894d8cdd779f6bc5b848b0a9fb423ed3a4917ba
|
|
| MD5 |
b9d274565dc89d59cc967e86fa129471
|
|
| BLAKE2b-256 |
03ba80c3b241bf92290a286561f4a9c62e0b0fbc33e8412779515f88a2469f79
|
File details
Details for the file sqlitedao-0.8.0-py3-none-any.whl.
File metadata
- Download URL: sqlitedao-0.8.0-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3527d60375a9fca9779c6c817f728b2f425862bd0541583f5a6a703d45b5a5a
|
|
| MD5 |
ea4dcd9059ece89e9cbc74f112bae928
|
|
| BLAKE2b-256 |
444213975954d5ebdf3126873c205110eec45064f69fd50bfbe9a260afea99ea
|