Flask == scoped_session
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Flask  ==   scoped_session
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                Flask? ==>? ?scoped_session
from sqlalchemy.orm import sessionmakerfrom sqlalchemy import create_enginefrom sqlalchemy.orm import scoped_sessionengine = create_engine("mysql+pymysql://root:123@47.93.4.198:3306/s6?charset=utf8",max_overflow=0, # 超過連接池大小外最多創建的連接pool_size=5, # 連接池大小pool_timeout=30, # 池中沒有線程最多等待的時間,否則報錯pool_recycle=-1 # 多久之后對線程池中的線程進行一次連接的回收(重置) )SessionFactory = sessionmaker(bind=engine)# 方式一:由于無法提供線程共享功能,所有在開發時要注意,在每個線程中自己創建 session。# from sqlalchemy.orm.session import Session# 自己具有操作數據庫的:'close', 'commit', 'connection', 'delete', 'execute', 'expire',.....session = SessionFactory()# print('原生session',session)# 操作 sql語句 session.close()# 方式二:支持線程安全,為每個線程創建一個session,單線程就不會創建多個。# - threading.Local 用過的地方:數據庫連接池# - 唯一標識 用過的地方:session,request,gevent,app# ScopedSession對象# self.registry(), 加括號 創建session# self.registry(), 加括號 創建session# self.registry(), 加括號 創建sessionfrom greenlet import getcurrent as get_identsession = scoped_session(SessionFactory,get_ident) # get_ident(): 可以獲取當前線程的唯一標識# session.add# 操作 sql語句session.remove()小結:?
1.scoped_session的的功能:? 支持了線程安全。
方式一:手動維護,各種操作都需要自己完成。由于無法提供線程共享功能,所有在開發時要注意,在每個線程中自己創建 session。
方式二:支持線程安全,為每個線程創建一個session,單線程就不會創建多個。
- threading.Local 用過的地方:數據庫連接池
-?唯一標識 用過的地方:session,request,gevent,app
2.兩種方式的寫法不一樣,但是,它們的本質是一樣的。還是操作原生sql的基礎上(方式1),(方式2)在(方式1)的基礎上,多加了個線程安全。
通過local本地實現的。get_ident(): 可以獲取當前線程的唯一標識
?轉載于:https://www.cnblogs.com/zhongbokun/p/8278816.html
總結
以上是生活随笔為你收集整理的Flask == scoped_session的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【转】解决yum安装软件报Couldn'
 - 下一篇: 通过lseek产生空洞文件