Skip to main content

Datalite

Maintainability Test Coverage PyPI version shields.io PyPI license Documentation Status

It should be noted that Datalite is not suitable for secure web applications, it really is only suitable for cases when you can trust user input.

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

Detailed API reference

Download and Install

You can install datalite simply by

pip install datalite

Or you can clone the repository and run

python setup.py

Datalite has no dependencies! As it is built on Python 3.7+ standard library. Albeit, its tests require unittest library.

Datalite in Action

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.

Basic Usage

Entry manipulation

After creating an object traditionally, given that you used the datalite decorator, the object has three new methods: .create_entry(), .update_entry() and .remove_entry(), you can add the object to its associated table using the former, and remove it using the later. You can also update a record using the middle.

student = Student(10, "Albert Einstein")
student.create_entry()  # Adds the entry to the table associated in db.db.
student.student_id = 20 # Update an object on memory.
student.update_entry()  # Update the corresponding record in the database.
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

⚠️ Limitation! Fetch can only fetch limited classes correctly: int, float, bytes and str!

Finally, you may wish to recreate objects from a table that already exist, for this purpose we have the module fetch module, from this you can import fetch_from(class_, obj_id) as well as is_fetchable(className, object_id) former fetches a record from the SQL database given its unique object_id 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 also have four 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 two helper methods, fetch_if(class_, condition) fetches all the records of type class_ that fit a certain condition. Here conditions must be written is SQL syntax. For easier, only one conditional checks, there is fetch_equals(class_, field, value) that checks the value of only one field and returns the object whose field equals the provided value.

Pagination

datalite also supports pagination on fetch_if, fetch_all and fetch_where, you can specify page number and element_count for each page (default 10), for these functions in order to get a subgroup of records.

Release files for datalite 0.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for datalite 0.7.3
File Size Uploaded
datalite-0.7.3.tar.gz 13.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for datalite 0.7.3
File Interpreter ABI Platform
datalite-0.7.3-py3-none-any.whl Python 3 none any Details

Total release size: 28.4 kB

Release files / datalite-0.7.3.tar.gz

Download URL datalite-0.7.3.tar.gz
Size 13.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3bb069d46d1c9a7dbe120165b57098f49518a6054ed78d4b85ac213b41845a99
BLAKE2b-256 checksum
How to use checksums
30a61d821619792ab89f20c5a4b109f708a881db0afd152f2187205e3e4157bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.17

Release files / datalite-0.7.3-py3-none-any.whl

Download URL datalite-0.7.3-py3-none-any.whl
Size 15.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c648e6c96b5464fb7e75b7a767df948f174d8ed5719c74b11e7c708d5db9bcb
BLAKE2b-256 checksum
How to use checksums
a2c870c6b58e2f7129e0742e8428c3357be71d02b4a671538e27e195316b3b76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.17

Release history Release notifications | RSS feed

This release

0.7.3 This release

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2

2 release files

0.1.2

2 release files

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page