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()

結果:可以循環插入多條數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM