从SQLAlchemy类模型生成Yaml文件

时间:2017-03-03 19:06:48

标签: python-3.x sqlalchemy yaml

我在SQLAlchemy

中定义了如下所示的模型
class Users(db.Model, CRUD_MixIn):
    id = db.Column(db.Integer, primary_key=True)

    email = db.Column(db.String(250), nullable=False, unique=True)
    password = db.Column(db.String(250), nullable=False)
    name = db.Column(db.String(250), nullable=False)
    active = db.Column(db.Integer, nullable=False)
    creation_time = db.Column(db.TIMESTAMP,   server_default=db.func.current_timestamp(), nullable=False)
    role = db.Column(db.String(250), db.ForeignKey('roles.name'))

我想从中生成一个YAML文件,如下所示:

users:
 - email:email
 - password:string
 - name:string
 - active:boolean
 - creation_time:datetime
 - modification_time:datetime
 - role:string

有没有办法在python中做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以按列迭代并获取python_types,类似这样的

import yaml

def yaml_from_model(model):
    columns = {c.name: c.type.python_type.__name__
               for c in model.__table__.columns}
    return yaml.dump({model.__name__.lower(): columns},
                     default_flow_style=False)

>> print yaml_from_model(Users)
>> users:
     active: int
     creation_time: datetime
     email: str
     id: int
     name: str
     password: str
     role: str