问题:表单数据太多,一个个获取变量太慢了,多个表单数据重复,都是增加或修改,如果批量操作
解决:使用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'})