Skip to main content

mappeing jsonschema for sqlalchemy models

Project description

# -*- coding:utf-8 -*-
import sqlalchemy as sa
import sqlalchemy.orm as orm
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Group(Base):
    """model for test"""
    __tablename__ = "Group"

    pk = sa.Column(sa.Integer, primary_key=True, doc="primary key")
    name = sa.Column(sa.String(255), default="", nullable=False)


class User(Base):
    __tablename__ = "User"

    pk = sa.Column(sa.Integer, primary_key=True, doc="primary key")
    name = sa.Column(sa.String(255), default="", nullable=True)
    group_id = sa.Column(sa.Integer, sa.ForeignKey(Group.pk), nullable=False)
    group = orm.relationship(Group, uselist=False, backref="users")


## ------SingleModelWalker--------
import pprint as pp
from alchemyjsonschema import SchemaFactory
from alchemyjsonschema import SingleModelWalker

factory = SchemaFactory(SingleModelWalker)
pp.pprint(factory.create(User))

"""
{'properties': {'group_id': {'type': 'integer'},
                'name': {'maxLength': 255, 'type': 'string'},
                'pk': {'description': 'primary key', 'type': 'integer'}},
 'required': ['pk', 'group_id'],
 'title': 'User',
 'type': 'object'}
"""


## ------OneModelOnlyWalker--------
import pprint as pp
from alchemyjsonschema import SchemaFactory
from alchemyjsonschema import OneModelOnlyWalker

factory = SchemaFactory(OneModelOnlyWalker)
pp.pprint(factory.create(User))

"""
{'properties': {'name': {'maxLength': 255, 'type': 'string'},
                'pk': {'description': 'primary key', 'type': 'integer'}},
 'required': ['pk'],
 'title': 'User',
 'type': 'object'}
"""


## ------AlsoChildrenWalker--------
import pprint as pp
from alchemyjsonschema import SchemaFactory
from alchemyjsonschema import AlsoChildrenWalker

factory = SchemaFactory(AlsoChildrenWalker)
pp.pprint(factory.create(User))

"""
{'properties': {'group': {'name': {'maxLength': 255, 'type': 'string'},
                          'pk': {'description': 'primary key',
                                 'type': 'integer'}},
                'name': {'maxLength': 255, 'type': 'string'},
                'pk': {'description': 'primary key', 'type': 'integer'}},
 'required': ['pk'],
 'title': 'User',
 'type': 'object'}
"""

pp.pprint(factory.create(Group))

"""
{'description': 'model for test',
 'properties': {'name': {'maxLength': 255, 'type': 'string'},
                'pk': {'description': 'primary key', 'type': 'integer'},
                'users': {'items': {'name': {'maxLength': 255,
                                             'type': 'string'},
                                    'pk': {'description': 'primary key',
                                           'type': 'integer'}},
                          'type': 'array'}},
 'required': ['pk', 'name'],
 'title': 'Group',
 'type': 'object'}
"""

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

alchemyjsonschema-0.0.2.tar.gz (9.5 kB view details)

Uploaded Source

File details

Details for the file alchemyjsonschema-0.0.2.tar.gz.

File metadata

File hashes

Hashes for alchemyjsonschema-0.0.2.tar.gz
Algorithm Hash digest
SHA256 7a6e17a7d528c3c582a06d6c24940bb2114b6daeceebb65bc5ec7227a3b2a6ad
MD5 33e221c14d27c0f43491f9ba9706ba64
BLAKE2b-256 e63a0c458315bf6bf842bc5773c47895374b484e69d694eb4d10e25009b60df9

See more details on using hashes here.

Supported by

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