sqlalchemy批量添加数据-数据源是json(小算法)

 

需求:

想要写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()

结果:可以循环插入多条数据

 

原文地址:https://www.cnblogs.com/kaerxifa/p/11413759.html