問題:
SQLAlchemy 能否執行批次插入,類似語句(INSERT INTO foo (bar) VALUES (1), (2), (3)),而不是為每個物件執行單獨的插入?
答案:
SQLAlchemy 1.0.0 版本引入了批次操作,包括批次插入和更新。
批次插入:
在1.0.0 版本及更高版本中,SQLAlchemy 支援使用以下方式進行批次插入: bulk_save_objects() 方法:
s = Session() objects = [ User(name="u1"), User(name="u2"), User(name="u3") ] s.bulk_save_objects(objects) s.commit()
此程式碼將執行單一批次插入操作以新增所有三個User 物件。
提高效率:
與為每個物件執行單獨插入相比,使用批次插入可顯著提高效能。
過時的資料和交易:
要保持資料一致性,請使用 autocommit=False 的會話。當您使用 session.commit() 手動提交交易時,SQLAlchemy 會刷新修改的物件並在後續查詢期間取得更新的記錄。然而,來自外部來源的資料庫修改仍然可能導致陳舊資料問題。為了緩解這種情況,請考慮使用資料庫鎖來強制交易一致性。
以上是SQLAlchemy 如何實現最佳化的批次插入(如單一 SQL 語句而不是單獨插入)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!