SQLAlchemy批量運算元據

2021-09-26 05:41:14 字數 1942 閱讀 1596

批量插入

list

(dict()

))把要插入的資料以字典的形式做成列表,然後把列表傳入api,就可以實現批量插入的操作,和單條插入比起來效率快了很多。但是有的driver(mysql-connector)好像不支援utf8mb4的資料表編碼的表的批量插入,所以構造engine時要注意不要使用utf8mb4的資料庫連線

這種插入方法的效率非常高,而且介面操作非常方便,非常適用, 這裡有乙份關於sqlalchemy效能的對比測試,有興趣的可以看一下

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from db import user

db_connect =

'mysql+mysql-connector://root:123@localhost/ooxx?charset=utf8'

# 因為使用的mysql-connector driver,所以此處使用的是utf8編碼,否則會報錯。如果專案中使用的是utf8mb4,為了相容可以在這裡單獨建立乙個session而不使用全域性的session池;mysqldb等其他driver沒有測試過。

engine = create_engine(db_connect, echo=

true

)# 建立engine

db_session = sessionmaker(bind=engine)

# 構造session會話

session = db_session(

)# 建立session

# 下面是要批量插入的資料(user使用者表批量匯入1000個人)

users =

[for i in

range

(1000

)]

批量更新

和批量插入不同的是,批量更新的dict(),必須存在id的key,好讓driver知道要更新的是那條記錄

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from db import user

db_connect = 'mysql+mysql-connector://root:123@localhost/ooxx?charset=utf8mb4『。

engine = create_engine(db_connect, echo=true) # 建立engine

db_session = sessionmaker(bind=engine) # 構造session會話

session = db_session() # 建立session

# 下面是要批量插入的資料(user使用者表批量匯入1000個人)

users = [ for i in range(1000)] # 增加了乙個名為id的key, 目的是為了找到要更新的是哪條資料

批量刪除

正常情況下我們不會使用**一次刪除大量的表資料, 不符合資料庫的規範, 但是如果真的有**的需求需要我們一次大量刪除怎麼辦呢?

sqlalchemy提供了乙個批量刪除的介面

db.query(user).filter(user.home=='shanghai').delete()  # 刪除家在上海的所有使用者
可以看出來的這個api操作的某一項資料相同的全部記錄, 與這個api類似的還有對應的更新操作, 與上面的批量更新不同,這裡更新的記錄只能使用同乙個更新的資料

db.query(user).filter(user.home=='shanghai').update()  # 批量更新家在上海的使用者

python中SQLAlchemy 運算元據庫

sqlalchemy為python提供了不同資料庫的統一介面,採用orm的方式運算元據庫。sqlalchemy 是python程式語言下的一款開源軟體。提供了sql工具包及物件關係對映 orm 工具。物件關係對映 使用者使用python定義的類 與 資料庫中的表相關聯的一種方式,類的例項則對應資料表...

使用sqlalchemy運算元據庫

from sqlalchemy import create engine,column,integer,string,datetime,float,date,blob,func,foreignkey,extract,and or text from sqlalchemy.orm import ses...

mybatis 如何批量運算元據庫

1 通過foreach 在sql裡面批量運算元據 示例如下 insert into t user user name,real name,mobile,email,note,position id values 2 mybatis 批量 提交資料庫 mybatis的執行器有三種型別 這個型別不做特殊...