Storage based off of sqlalchemy_marshmallow
Project description
alchemical-storage
alchemical-storage is a library intended to bridge CRUD operations with SQLAlchemy query constructs
Install
pip install alchemical-storage
Basic Usage
alchemical-storage
assumes that you have set up a session (or scoped_session) for your database. This is assumed to have been imported as session
in the following example. The table for the defined model is also assumed to be in the database.
- Set up the model.
"""package/models.py"""
from sqlalchemy import orm
class Model(orm.DeclarativeBase):
"""Model class"""
__tablename__ = 'models'
attr: orm.Mapped[int] = orm.mapped_column(primary_key=True)
attr2: orm.Mapped[int]
attr3: orm.Mapped[str]
- Set up the storage schema. The Meta class in the schema should set load_instance to
True
.
"""package/schema.py"""
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from package import Model
class ModelSchema(SQLAlchemyAutoSchema):
"""Model storage schema"""
class Meta:
model = Model
load_instance = True
- Create a DatabaseStorage instance. Set the
primary_key
keyword argument (defaults to 'slug') to the primary key of the model.
"""___main___.py"""
from package import models
from package.schema import ModelSchema
storage = DatabaseStorage(
session, models.Model, ModelSchema, primary_key="attr",)
- Use the DatabaseStorage instance.
# __main__.py continued...
storage.get(1) # Gets a record from the database
storage.put(2, {'attr2': 1, 'attr3': 'test'}) # Puts a record to the database
storage.patch(1, {'attr2': 42}) # Update a record in the database
storage.delete(1) # Delete a record from the database
storage.index() # Get an index of records from the database
- Commit changes to the database.
session.commit()
License
MIT License. See LICENSE file for more details.
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
Close
Hashes for alchemical_storage-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac8a8887b488cb48aa040147a56b28994476208560161e4ed59ab1884953b942 |
|
MD5 | 856309dbb41a0bb3eb3bb5f331691595 |
|
BLAKE2b-256 | 60a08f0dafbf28d26ad9aa9e6912d4a3643c903f0a540feb4d12a6b0e4a6e047 |