需求:
想要寫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()
結果:可以循環插入多條數據

