sqlalchemy 多執行緒 建立session

2022-04-01 05:02:09 字數 1640 閱讀 4967

1、基於threding.local,推薦使用

from sqlalchemy.orm import

sessionmaker

from sqlalchemy import

create_engine

from sqlalchemy.orm import

scoped_session

from models import

student

from threading import

thread

engine =create_engine(

"mysql+pymysql://root:密碼@127.0.0.1:3306/資料庫?charset=utf8",

max_overflow=0, #

超過連線池大小外最多建立的連線

pool_size=5, #

連線池大小

pool_timeout=30, #

池中沒有執行緒最多等待的時間,否則報錯

pool_recycle=-1 #

多久之後對執行緒池中的執行緒進行一次連線的**(重置)

)sessionfactory = sessionmaker(bind=engine)

session =scoped_session(sessionfactory)

deftask():

ret =session.query(student).all()

#將連線交還給連線池

session.remove()

for i in range(20):

t = thread(target=task)

t.start()

2、基於多執行緒

from sqlalchemy.orm import

sessionmaker

from sqlalchemy import

create_engine

from models import

student

from threading import

thread

engine =create_engine(

"mysql+pymysql://root:密碼@127.0.0.1:3306/資料庫?charset=utf8",

max_overflow=0, #

超過連線池大小外最多建立的連線

pool_size=5, #

連線池大小

pool_timeout=30, #

池中沒有執行緒最多等待的時間,否則報錯

pool_recycle=-1 #

多久之後對執行緒池中的執行緒進行一次連線的**(重置)

)sessionfactory = sessionmaker(bind=engine)

deftask():

#去連線池中獲取乙個連線

session =sessionfactory()

ret =session.query(student).all()

#將連線交還給連線池

session.close()

for i in range(20):

t = thread(target=task)

t.start()

SQLAlchemy多執行緒下事務隔離機制詳解

通過開啟多執行緒,併發查詢訂單詳情資訊,通過將不同訂單物件傳送給不同執行緒,執行完所需要的業務邏輯之後,對訂單物件的資料進行修改,然後執行 commit,查詢資料庫發現資料沒有更新,且後台日誌沒有任何的報錯 錯誤 from concurrent.futures import threadpoolex...

建立多執行緒

多執行緒 乙個程式可以同時執行多個任務,每個任務由 乙個單獨的 執行緒完成,可提高程式執行速度和處理速度 執行緒為程式執行的基本單位 2.建立乙個執行緒類的物件。threaddemo1 td new threaddemo1 3.啟動執行緒執行 td.start 1.建立實現runable介面的雷,並...

多執行緒學習 建立執行緒

執行緒的建構函式 public thread public thread runnable target public thread string name public thread runnable target,string name public thread threadgroup gro...