Skip to main content

SQLAlchemy integration with the marshmallow (de)serialization library

Project description

Latest version Travis-CI Documentation

Homepage: https://marshmallow-sqlalchemy.readthedocs.io/

SQLAlchemy integration with the marshmallow (de)serialization library.

Declare your models

import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker, relationship, backref

engine = sa.create_engine('sqlite:///:memory:')
session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()

class Author(Base):
    __tablename__ = 'authors'
    id = sa.Column(sa.Integer, primary_key=True)
    name = sa.Column(sa.String)

    def __repr__(self):
        return '<Author(name={self.name!r})>'.format(self=self)

class Book(Base):
    __tablename__ = 'books'
    id = sa.Column(sa.Integer, primary_key=True)
    title = sa.Column(sa.String)
    author_id = sa.Column(sa.Integer, sa.ForeignKey('authors.id'))
    author = relationship("Author", backref=backref('books'))

Base.metadata.create_all(engine)

Generate marshmallow schemas

from marshmallow_sqlalchemy import ModelSchema

class AuthorSchema(ModelSchema):
    class Meta:
        model = Author

class BookSchema(ModelSchema):
    class Meta:
        model = Book
        # optionally attach a Session
        # to use for deserialization
        sqla_session = session

author_schema = AuthorSchema()

(De)serialize your data

author = Author(name='Chuck Paluhniuk')
book = Book(title='Fight Club', author=author)
session.add(author)
session.add(book)
session.commit()

author_schema.dump(author).data
# {'books': [123], 'id': 321, 'name': 'Chuck Paluhniuk'}

author_schema.load(dump_data, session=session).data
# <Author(name='Chuck Paluhniuk')>

Get it now

pip install -U marshmallow-sqlalchemy

Documentation

Documentation is available at https://marshmallow-sqlalchemy.readthedocs.io/ .

License

MIT licensed. See the bundled 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

marshmallow-sqlalchemy-0.11.0.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

marshmallow_sqlalchemy-0.11.0-py2.py3-none-any.whl (12.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file marshmallow-sqlalchemy-0.11.0.tar.gz.

File metadata

File hashes

Hashes for marshmallow-sqlalchemy-0.11.0.tar.gz
Algorithm Hash digest
SHA256 45bb424923c4ee2d893ec95483f256abc1a2e1d620d1ae54fae00f38e64a62d1
MD5 58dd702fcc2a34eca6b343f5f8898fb1
BLAKE2b-256 32c633f65494b5117dd12dba7c45d756f4b0e4a0582586a64319bbd9fa4f571c

See more details on using hashes here.

Provenance

File details

Details for the file marshmallow_sqlalchemy-0.11.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for marshmallow_sqlalchemy-0.11.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7c6ed218c2c408a44c6980db352b31c7804e7a70514850f8698808846cdf2183
MD5 757a54124da904b4f27b0cbd0b68d892
BLAKE2b-256 1893da610b2d31b5072a6ea32b4cd630cb2a4f43e6d584807166bb1d7aa848d4

See more details on using hashes here.

Provenance

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