Skip to main content

A small package that binds dataclasses to an sqlite database

Project description

Datalite

Datalite is a simple Python package that binds your dataclasses to a table in a sqlite3 database, using it is extremely simple, say that you have a dataclass definition, just add the decorator @datalite(db_name="db.db") to the top of the definition, and the dataclass will now be bound to the file db.db

For example:

from dataclasses import dataclass
from datalite import datalite


@datalite(db_path="db.db")
@dataclass
class Student:
    student_id: int
    student_name: str = "John Smith"

This snippet will generate a table in the sqlite3 database file db.db with table name student and rows student_id, student_name with datatypes integer and text, respectively. The default value for student_name is John Smith.

Entry manipulation

After creating an object traditionally, given that you used the datalite decorator, the object has two new methods: .create_entry() and .remove_entry(), you can add the object to its associated table using the former, and remove it using the latter.

student = Student(10, "Albert Einstein")
student.create_entry()  # Adds the entry to the table associated in db.db
student.remove_entry()  # Removes from the table.

But what if you have created your object in a previous session, or wish to remove an object unreachable? ie: If the object is already garbage collected by the Python interpreter? remove_from(class_, obj_id) is a function that can be used for this express purpose, for instance:

remove_from(Student, 2)  # Removes the Student with obj_id 2.

Object IDs are auto-incremented, and correspond to the order the entry were inserted onto the system.

Fetching Records

:warning: Limitation! Fetch can only fetch limited classes correctly: int, float and str!

Finally, you may wish to recreate objects from a table that already exist, for this purpose we have the function fetch_from(class_, object_id) as well as is_fetchable(className, object_id) former fetches a record from the SQL database whereas the latter checks if it is fetchable (most likely to check if it exists.)

>>> fetch_from(Student, 2)
Student(student_id=10, student_name='Albert Einstein')

We have three helper methods, fetch_range(class_, range_) and fetch_all(class_) are very similar: the former fetches the records fetchable from the object id range provided by the user, whereas the latter fetches all records. Both return a tuple of class_ objects.

The last helper method, fetch_if(class_, condition) fetches all the records of type class_ that fit a certain condition. Here conditions must be written is SQL syntax.

Project details


Download files

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

Source Distribution

datalite-0.2.2.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

datalite-0.2.2-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file datalite-0.2.2.tar.gz.

File metadata

  • Download URL: datalite-0.2.2.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.1 CPython/3.8.2

File hashes

Hashes for datalite-0.2.2.tar.gz
Algorithm Hash digest
SHA256 16730185b6b40686838362c2587c0d743630a930873c937797fc805fdf512968
MD5 bccd2e4acc60c698034cda772865feb9
BLAKE2b-256 77259cd475190dcef168910e1022f53433fdb02c2a6e2afef933119a3b3a64de

See more details on using hashes here.

File details

Details for the file datalite-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: datalite-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.1 CPython/3.8.2

File hashes

Hashes for datalite-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0796eda42638e0d5199b0c227832334fe6b0dd32d401b071a23f2b2decaaa83c
MD5 016d45f6febf84fa9119437b7ec501c9
BLAKE2b-256 366f5ff8bd3466eaffe0d6d6aaedd457c86f7f70e57e421442d6b7421f7852a3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page