Skip to main content

simple single file dao for sqlite

Project description

SqliteDao

A simplified DAO for SQL abstraction for personal projects. All in one file.

pip install sqlitedao

Examples

Create Table easily:

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:

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": ["name"]
}
dao.create_table(TEST_TABLE_NAME, columns, create_table_indexes)

INSERT:

lebron = {"name": "LeBron James", "position": "SF", "age": 35, "height": "6-8.5"}
kobe = {"name": "Kobe Bryant", "position":  "SG", "age": 41, "height": "6-6"}
jordan = {"name": "Michael Jordan", "position": "SG", "age": 56, "height": "6-6"}
dao.insert_rows(TEST_TABLE_NAME, [lebron, kobe, jordan])

READ:

result = dao.search_table(TEST_TABLE_NAME, {"position": "SG"})
[{'name': 'Kobe Bryant', 'position': 'SG', 'age': 41, 'height': '6-6'},
 {'name': 'Michael Jordan', 'position': 'SG', 'age': 56, 'height': '6-6'}]

Or with more operators:

result = dao.search_table(TEST_TABLE_NAME, SearchDict().add_filter("age", 40, operator="<"))

UPDATE:

dao.update_many(TEST_TABLE_NAME, [{"age": 30}, {"age": 40}], [{"name": "A"}, {"name": "B"}])

update_row, update_rows is also available with slightly different functionality.

DELETE:

dao.delete_rows(TEST_TABLE_NAME, {"position": "SG"})

Same for update and deletion.

Create classes inheriting TableItem easily and deal with even less code,

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)
...

see test/item_test.py for example.

Helpers

  1. SearchDict: allow more comparators than "="

  2. ColumnDict: allow 'primary key && not null' to columns.

  • 1, 2 not needed for full functions
  1. TableItem: baseclass for python items <-> db row connection.

TODO

Add support for pagination (offsets)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sqlitedao, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size sqlitedao-0.1.1-py3-none-any.whl (4.9 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size sqlitedao-0.1.1.tar.gz (4.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page