python的with语句
生活随笔
收集整理的這篇文章主要介紹了
python的with语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from setting import EREBUS_DB_CONNECT_STRING from contextlib import contextmanager # 創建數據庫引擎,echo為True,會打印所有的sql語句 engine = create_engine(EREBUS_DB_CONNECT_STRING, echo=True, pool_size=250, max_overflow=50, pool_recycle=300)# 創建會話類 db_session = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine,expire_on_commit=True))# 創建會話對象 @contextmanager def session(): #生成器函數try:session = db_session()session.expire_on_commit = Falseyield sessionexcept:session.rollback()finally:session.close()
?
裝飾器@contextmanager 只是省略了 __enter__() / __exit__() 的編寫,但并不負責實現資源的“獲取”和“清理”工作;“獲取”操作需要定義在 yield 語句之前,“清理”操作需要定義 yield 語句之后,這樣 with 語句在執行 __enter__() / __exit__() 方法時會執行這些語句以獲取/釋放資源,即生成器函數中需要實現必要的邏輯控制,包括資源訪問出現錯誤時拋出適當的異常
參考:
1、https://www.ibm.com/developerworks/cn/opensource/os-cn-pythonwith/index.html
2、https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001478651770626de401ff1c0d94f379774cabd842222ff000
轉載于:https://www.cnblogs.com/shengulong/p/7519770.html
總結
以上是生活随笔為你收集整理的python的with语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奶茶店需要多少钱啊?
- 下一篇: 微信 小程序布局 水平菜单