Skip to main content

SQLAlchemy integration with the marshmallow (de)serialization library

Project description

Latest version Travis-CI

Homepage: http://marshmallow-sqlalchemy.rtfd.org/

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
        sqla_session = session

class BookSchema(ModelSchema):
    class Meta:
        model = Book
        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()

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

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

Get it now

pip install -U marshmallow-sqlalchemy

Documentation

Documentation is available at http://marshmallow-sqlalchemy.readthedocs.org/ .

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

Uploaded Source

Built Distribution

marshmallow_sqlalchemy-0.2.0-py2.py3-none-any.whl (10.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for marshmallow-sqlalchemy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2390ff226511fd001227656797bc7847c430a882e6c123f607ffbfafcdc4f751
MD5 c2860dde6def020f765ed7e3a0ca78a5
BLAKE2b-256 6d64386c9adba3824b259e96e99360b6edd68604346a45202fa27c16a41e41c4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for marshmallow_sqlalchemy-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b6e599936d97717b3122730b93428633954e62c1308252274ac36efe57de7328
MD5 953c47284f3ad9c8d210ae39b5aeabc0
BLAKE2b-256 2635c03eaf8be569590655828c965115366549059c5d0912b9924f1bf948039f

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