首页 > 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

更多相关:

  • 声明:本文为转载,如果有侵犯知识版本,请通知本人,本人将即刻停止侵权行为: http://blog.csdn.net/tianlesoftware/article/details/7412555 Oracle存储过程无法编译,在PL/SQL中编译,总是挂住了,这个原因可能是要编译的对象被会话给锁住了: 1、查看无效对象: 1 SEL...

  • 设置 session_id()程序恢复sess...

  • Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。举个例子来说,我们可以把已登录用户的用户名放在Session中,这样就能通过判断Session中的某个Key来判断用户是否登录,如果登录的话用户名又是多少。 我们知 道,Session对于每一个客户端(或者说浏览器实例)是“人手一份”...

  • 零(将字符串转化成数字的函数)       int num = atoi(arr);      该函数具有把字符串转化成整型数的作用。 壹(vim显示行号)       Linux终端下直接输入vim   ~/.vimrc,打开是一个空白的页面,然后进入插入模式,直接输入set nu,然后保存并退出,以      后每次  ...

  • windows下 Source Monitor代码度量工具的使用 引用链接: https://www.cnblogs.com/xuehanyu/p/4520965.html 1.总体介绍 SourceMonitor是一款免费的软件,运行在Windows平台下。它可对多种语言写就的代码进行度量,包括C、C++、C#、Java、V...

  •   python基础知识(二)   (二)常用控制流 1、控制语句 分支语句:起到一个分支分流的作用,类似马路上的红绿灯 循环语句:for while 可以使代码不断重复的执行   2、判断语句:关键字是if..elif..else  a、if条件语句后面可以接比较运算、逻辑运算、成员运算;当if后面的语句满足条件,允许的结果是Tru...

  • 1.Python : 是一门解释型 弱类型 高级开发编程语言. 2.第一个Python程序的编写: print ("hell,world") 3.变量:把程序运行过程中的值储存起来,方便后面的程序调用. 4.变量的命名要求: 1,只能是数字或字母或下划线组成; 2,不能是数字开头,也不能全是数字; 3,不能是Python的关键字; 4...

  • 一 程序的三种基本结构              顺序结构:程序从上往下依次执行,这个叫顺序结构         分支结构:有选择的执行或者不执行某段代码         循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法   (tips: if语句后面的大括号可以省略:如果省略:那么这个if语句只能管理离它最近的那...

  • 有一天,我写了一个自信满满的自定义组件myComponent,在多个页面import使用了,结果控制台给我来这个 我特么裤子都脱了,你给我来这个提示是几个意思 仔细一看 The Component 'MyComponentComponent' is declared by more than one NgModule...

  • 创建一个带路由的项目,依次执行下面每行代码 ng n RouingApp --routingcd RouingAppng g c components/firstng g c components/secondng g m components/second --routing    代码拷贝: import {NgModul...

  •       cnpm install vue-quill-editor cnpm install quill-image-drop-module cnpm install quill-image-resize-module 执行上面的命令安装,然后在main.js下面加入 //引入quill-editor编辑器import...

  • 首先要理解Vue项目加载顺序: index.html → main.js → App.vue → nav.json→ routes.js → page1.vue index.html建议加入样式

  • 简单记录平时画图用到的python 便捷小脚本 1. 从单个文件输入 绘制坐标系图 #!/usr/bin/python # coding: utf-8 import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl import sysf...