python类SQLAlchemy()的实例源码

serve.py 文件源码 项目:opentaxforms 作者: jsaponara 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def createApi(app,**kw):
    db = SQLAlchemy(app)
    conn, engine, metadata, md = connect(appname, **kw)
    Base = declarative_base()
    Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
    mysession = scoped_session(Session)
    apimanager = flask_restless.APIManager(app, session=mysession)
    counts = {}
    for tabl in md:
        tablobj = md[tabl]
        counts[tabl] = tablobj.count().execute().fetchone()[0]
        attrs = dict(
            __table__=tablobj,
            # todo should flask_restless need __tablename__?
            __tablename__=str(tabl),
            )
        attrs.update(dict(
            orgn=dict(
                form=db.relationship('Form'),
                ),
            form=dict(
                orgn=db.relationship('Orgn', back_populates='form'),
                slot=db.relationship('Slot', back_populates='form'),
                ),
            slot=dict(
                form=db.relationship('Form'),
                ),
            )[tabl])
        tablcls = type(str(tabl).capitalize(), (Base, ), attrs)
        colsToAdd = dict(
            orgn=(),
            form=(
                'orgn', 'orgn.code',
                ),
            slot=(
                'form', 'form.code',
                ),
            )[tabl]
        colsToShow = [c.name for c in tablobj.columns]
        colsToShow.extend(colsToAdd)
        # print tabl,colsToShow
        apimanager.create_api(
            tablcls,
            url_prefix='/api/v%s' % (apiVersion, ),
            include_columns=colsToShow,
            )
    return counts


问题


面经


文章

微信
公众号

扫码关注公众号