Skip to main content

Storage based off of sqlalchemy_marshmallow

Project description

Quickstart

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.

  1. 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]
    
  2. 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
    
  3. 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",)
    
  4. 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
    
  5. Commit changes to the database.

    session.commit()
    

License

MIT License. See LICENSE file for more details.

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

alchemical_storage-1.0.0.dev2.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

alchemical_storage-1.0.0.dev2-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file alchemical_storage-1.0.0.dev2.tar.gz.

File metadata

File hashes

Hashes for alchemical_storage-1.0.0.dev2.tar.gz
Algorithm Hash digest
SHA256 b00e7ce46bf52866f5c787b814e21ae2cfa71f721cd28f78c1f970b46e10beb5
MD5 d9adba099a6b14aaf749ca15e87fd006
BLAKE2b-256 c4322701a10b8042fa61d7ccdf3fa5db942a56eaedcf097e42b12c4b57b1e4e9

See more details on using hashes here.

File details

Details for the file alchemical_storage-1.0.0.dev2-py3-none-any.whl.

File metadata

File hashes

Hashes for alchemical_storage-1.0.0.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 777e2256ce3ca12d59666b2ef584e6c2278f3130e405133dbebdcf81dfa531a0
MD5 e89f50257e9b2c2b651e9fcc4b37473f
BLAKE2b-256 f6c26617a3962e1dd8a67cb181b091c2aa4ed34b22745451101dd4699623c96a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page