sqlalchemy快速更新或添加大表单数据

本文共有1210个字,关键词:

问题:表单数据太多,一个个获取变量太慢了,多个表单数据重复,都是增加或修改,如果批量操作

解决:使用sqlalchemy批量操作,使用eval获取操作的model,eval可以将字符串转换为方法或类

方法:

class ApiTablerHandler(BaseHandler):
    def post(self):
        args = {}
        # 获取formdata传递的表单数据,并进行去空格
        for k, v in self.request.body_arguments.items():
            v = v[0].decode().strip()
            args[k] = v
            sign = args['sign']
        # 删除多余的变量,保证formdata传递的参数与数据表一致
        del args['sign']
        table = sign + 'table'
        # 将变量转换成model
        class_table = eval(table)
        # 根据不同的model查询是否存在
        table_data = self.db.query(class_table).filter(
            class_table.unit_id == self.current_user.unit_id).first()
        if table_data:
            # 如果存在进行更新
            self.db.query(class_table).filter(
                class_table.unit_id == self.current_user.unit_id
                ).update(args)
        else:
            # 不存在进行添加
            data = class_table(**args)
            self.db.add(data)
        self.db.commit()
        self.write({'code': 'ok'})
版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。
添加新评论
暂无评论