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 details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easydatastore-0.1.7.tar.gz.
File metadata
- Download URL: easydatastore-0.1.7.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.1 Darwin/23.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6aeaa59eab51b222fea3ac2c0a9f96c0161cf65bf3ec287ad99fea16794eeacd
|
|
| MD5 |
25dcd4f0cbb157397f01e6bd71189e5f
|
|
| BLAKE2b-256 |
f3bdf9ed375dfd99c92e7e2e703a813f3c74b634d2d16244ff06f9204677d57a
|
File details
Details for the file easydatastore-0.1.7-py3-none-any.whl.
File metadata
- Download URL: easydatastore-0.1.7-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.1 Darwin/23.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72720bf0d661b8150df05676d40b34cad24223463eb02b2d59b5037a863ba348
|
|
| MD5 |
28ad767f43fc7b9898f80b8c86a062d8
|
|
| BLAKE2b-256 |
db87c41654b2974d2e29257cc6dea0616ec64cc9cea27ace92ce90343c7009de
|