SQLALCHEMY动态建表

SQLALCHEMY动态建表

2023年7月20日发(作者:)

SQLALCHEMY动态建表SQLALCHEMY动态建表业务背景:客户可页⾯配置SQL表的新建, 修改, 删除解决思路:中间表存储客户化配置根据配置参数新建表利⽤sqlalchemy orm来进⾏操作代码环境:python2flaskflask_sqlalchemypostgres实现难点:orm模型 中 model的创建orm模型 中 model的⼆次获取orm模型 中 model的属性获取orm模型 中 model的数据插⼊难点解析:orm模型 中 model的创建表的创建(通过sqlalchemy⽣成)原有逻辑中表的创建class Test(): """测试表""" __tablename__ = 'test' id = ('id', r, primary_key=True, autoincrement=True, nullable=False) ... ..._all()实现思路:创建 的⼦类通过 type() 可以创建⼀个动态创建⼀个类t = type(str(tablename), (,), items)orm模型 中 model的⼆次获取def make_models(tablename=None): MODEL_MAP = dict() models = .__subclasses__() # 获取所有类的⼦类 for m in models: MODEL_MAP[m.__tablename__] = m if tablename in MODEL_MAP: t = MODEL_MAP[tablename] return t return Noneorm模型 中 model的属性获取user_id = getattr(t, 'id') # getattr 可以获取当前类(对象)的字符串对应的对象orm模型 中 model的数据插⼊model = tcondition = ''for key, format in _(): condition = condition + '%s="%s", ' % (key, value)# tablename 不可为中⽂/ fields 不可为中⽂ / 前端做限制table = eval('model(%s)' % condition) # 此处采⽤eval函数 来达到, 创建model对象的效果(table)()

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689825044a288939.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信