需求:
想要写1个增加case的接口
问题:
sqlalchemy添加case的方式,只能是1条数据1条数据的插入,像这样:
1 ro2 = Role(name='user') 2 db.session.add_all([ro1]) 3 db.session.commit()
我希望的效果是这样的:
我传入一个字典{'name':'lisa'},然后自动转化成name=‘lisa’这样的格式
接口的参数是一组dict类型的数据,每一组数据即视为1条case,通过程序将json传过来的数据对号入座
1 a=[{'name':'lisa'},{'name':'bob'}] 2 3 case=[] 4 for i in a: #i={'name':'lisa'} 5 name=i['name'] #name='lisa' 6 7 obj = Role(name=name)#obj=<Role 'lisa'> 8 case.append(obj) 9 print(case)#[<Role 'lisa'>, <Role 'bob'>] 10 db.session.add_all(case) 11 db.session.commit()
完整的代码如下:
1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 4 from flask import Flask 5 from flask_sqlalchemy import SQLAlchemy 6 7 app = Flask(__name__) 8 9 # 设置连接数据库的URL 10 app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+mysqlconnector://root:admin123456@10.1.71.32:3306/test' 11 12 # 设置每次请求结束后会自动提交数据库的改动 13 app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True 14 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True 15 16 # 查询时显示原始SQL语句 17 app.config['SQLALCHEMY_ECHO'] = False 18 db = SQLAlchemy(app) 19 20 21 class Role(db.Model): 22 __tablename__ = 'roles' 23 id = db.Column(db.Integer, primary_key=True) 24 name = db.Column(db.String(64)) 25 26 def __repr__(self): 27 return '<Role %r>' % self.name 28 29 30 #数据源-要批量添加的case数据 list套dict 31 a=[{'name':'lisa'},{'name':'bob'}] 32 33 case=[] 34 for i in a: #i={'name':'lisa'} 35 name=i['name'] #name='lisa' 36 37 obj = Role(name=name)#obj=<Role 'lisa'> 38 case.append(obj) 39 print(case)#[<Role 'lisa'>, <Role 'bob'>] 40 db.session.add_all(case) 41 db.session.commit()
结果:可以循环插入多条数据