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
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16730185b6b40686838362c2587c0d743630a930873c937797fc805fdf512968 |
|
MD5 | bccd2e4acc60c698034cda772865feb9 |
|
BLAKE2b-256 | 77259cd475190dcef168910e1022f53433fdb02c2a6e2afef933119a3b3a64de |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0796eda42638e0d5199b0c227832334fe6b0dd32d401b071a23f2b2decaaa83c |
|
MD5 | 016d45f6febf84fa9119437b7ec501c9 |
|
BLAKE2b-256 | 366f5ff8bd3466eaffe0d6d6aaedd457c86f7f70e57e421442d6b7421f7852a3 |