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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file alchemyjsonschema-0.0.2.tar.gz.
File metadata
- Download URL: alchemyjsonschema-0.0.2.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a6e17a7d528c3c582a06d6c24940bb2114b6daeceebb65bc5ec7227a3b2a6ad
|
|
| MD5 |
33e221c14d27c0f43491f9ba9706ba64
|
|
| BLAKE2b-256 |
e63a0c458315bf6bf842bc5773c47895374b484e69d694eb4d10e25009b60df9
|