zoukankan      html  css  js  c++  java
  • 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 = False
            yield session
        except:
            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

  • 相关阅读:
    Ajax的基本使用
    Jquery--动画
    JQuery基础(选择器、事件、DOM操作)
    LinQ 创建连接、简单增删改查
    分页查询/组合查询
    分页查询、组合查询
    JavaScript
    WebForm Response和Request以及Cookie
    Response、Request、QueryString,修改,Cookies
    Repeater
  • 原文地址:https://www.cnblogs.com/shengulong/p/7519770.html
Copyright © 2011-2022 走看看