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.1.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file alchemical_storage-1.0.1.tar.gz.

File metadata

  • Download URL: alchemical_storage-1.0.1.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for alchemical_storage-1.0.1.tar.gz
Algorithm Hash digest
SHA256 54e69ce7bb8a66fc09bae7d794052d6caf89d333b23529f586a3d741de23baba
MD5 b850e1fde41fbd8e6a10b960841db53d
BLAKE2b-256 b933abebdca5908e75e551b2487ea3122b6ab9997fbf37b9f6bf2fd93afaf626

See more details on using hashes here.

File details

Details for the file alchemical_storage-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for alchemical_storage-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 83ccaeb29343a7073bfedeb2583fe23dd723db0fccbf523708fa2c38417d223f
MD5 967babe037b99892707175ba1b415a49
BLAKE2b-256 04229b15bc0ab25fcb9785ba5455212e0c1c77b5854e90bc45d9cae07e733da1

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