kataev / sqlalchemy-pydantic-field

Sqlalchemy field with pydantic marshalling

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sqlalchemy-pydantic-field

pypi Python: 3.6+ Downloads Build Status Code coverage License: MIT Code style: black

Description

Wrap sqlalchemy json field with pydantic models NOTE: Not for production use (have a bug: wraps json in json on postgresql)

Installation

pip install sqlalchemy-pydantic-field

Usage

@as_declarative()
class Base:
    pass


class Schema(pydantic.BaseModel):
    text: str
    year: int
    ids: MutableList
    meta: MutableDict

    class Config:
        validate_assignment = True


class Author(Base):
    __tablename__ = 'author'

    id = sa.Column('author_id', sa.Integer, primary_key=True)
    name = sa.Column(sa.String, nullable=False)
    data = sa.Column(PydanticField(Schema, json_type=JSON))

    def __init__(self, name: str, data: Schema):
        self.name = name
        self.data = data

data = Schema(text='hello',
              year=2019,
              ids=[1, 2, 3],
              meta={'foo': 'bar'})
author = db.Author('test', data)

with db.session() as s:
    s.add(author)

License

MIT

Change Log

Unreleased

  • initial

About

Sqlalchemy field with pydantic marshalling

License:MIT License


Languages

Language:Python 91.8%Language:Makefile 8.2%