The easiest way to create type-safe, in-memory datastores for your models.
Project description
easydatastore
- Create type-safe, in-memory datastores
Requirements
- Python 3.11+
Install
pip install easydatastore
Usage
If you want to prototype a web application quickly and just need a way to validate your mock data, you can use easydatastore
to create an in-memory datastore for your models, directly out of the box.
Features:
- In-memory tables for your models with
easydatastore.Table
, with a familiar pydantic-flavored syntax and ORM-like API. - Enforce uniqueness constraints with
Column(unique=True)
- Use indexing for faster lookups with
Column(index=True)
- IDE-friendly type hints ensure your coding experience is type-safe.
Example
import easydatastore.exceptions
from easydatastore import Column, Table
class Person(Table):
name: str = Column(primary_key=True)
email: str | None = Column(unique=True, default=None)
family_name: str
age: int
Person(name="Snap", family_name="Krispies", email="snap@example.com", age=92)
Person(name="Crackle", family_name="Krispies", age=92)
Person(name="Pop", family_name="Krispies", age=92)
Person(name="Tony", family_name="Tiger", email="tony@example.com", age=72)
Person(name="Cap'n", family_name="Crunch", age=53)
# retrieve an instance from the table using the .get() method and a primary key value
tony = Person.get("Tony")
print(tony) # Person(name='Tony', email=None, family_name='Tiger')
# or query your table using the .filter() method
print([person.name for person in Person.filter(family_name="Krispies")]) # ["Snap", "Crackle", "Pop"]
print([person.name for person in Person.filter(lambda person: person.age < 90)]) # ["Tony", "Cap'n"]
# delete instances from the table with the .delete() method
Person.delete(Person.get("Crackle"))
print([person.name for person in Person.all()]) # ["Snap", "Pop", "Tony"]
# easydatastore will validate uniqueness for you... these operations will raise exceptions:
try:
tony.email = Person.get("Snap").email
except ValueError as e:
print(e.args[0]) # ValueError: Value 'snap@example.com' for field 'email' is not unique
try:
Person(name="Snap", family_name="Rice", age=1)
except easydatastore.exceptions.DuplicateUniqueFieldValueError as e:
print(e.args[0]) # DuplicateUniqueFieldValueError
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
easydatastore-0.1.7.tar.gz
(8.9 kB
view hashes)
Built Distribution
Close
Hashes for easydatastore-0.1.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72720bf0d661b8150df05676d40b34cad24223463eb02b2d59b5037a863ba348 |
|
MD5 | 28ad767f43fc7b9898f80b8c86a062d8 |
|
BLAKE2b-256 | db87c41654b2974d2e29257cc6dea0616ec64cc9cea27ace92ce90343c7009de |