sqlalchemy Connection Pool

2023-11-10

sqlalchemy 默認的pool_size=5
pool裡存放的是在跟數據庫的的閒置連接,
使用c1 = engine.connect() 或
session = scoped_session(sessionmaker(bind=engine))
會創建連接, 創建連接的步驟
1、看pool裡是否有連接,如果有取出該連接返回
2、pool沒有空閉的連接則建立一個新接的連接
隻有當使用engine.close() 或
session2.commit()、session2.rollback()、session2.close()
後連接又返回到pool連接池裡

http://simple-is-better.com/news/651
文章說要在 finally 裡web.ctx.orm.commit()後加上
web.ctx.orm.close() # <=- 关闭session,或者用 .remove()
個人認為這一點並不是必須的,因為以經調用了web.ctx.orm.commit()

#!/usr/bin/env python

from sqlalchemy import create_engine

engine = create_engine("mysql://root:liukesun@172.17.22.131/testdb", pool_size=5,echo_pool=True)

c1 = engine.connect()
c2 = engine.connect()
c3 = engine.connect()

c1.close()
c2.close()
c3.close()

# pool size is now three.

raw_input()

for i in xrange(10):
    c = engine.connect()
    print c.execute("select 1").fetchall()
    c.close()

import string
import random
import web

from sqlalchemy.orm import scoped_session, sessionmaker
from models import *

urls = (
    "/", "add",
    "/view", "view"
)

def load_sqla(handler):
    web.ctx.orm = scoped_session(sessionmaker(bind=engine))
    try:
        return handler()
    except web.HTTPError:
       web.ctx.orm.commit()
       raise
    except:
        web.ctx.orm.rollback()
        raise
    finally:
        web.ctx.orm.commit()
        # If the above alone doesn't work, uncomment 
        # the following line:
        #web.ctx.orm.expunge_all() 


app = web.application(urls, locals())
app.add_processor(load_sqla)


class add:
    def GET(self):
        web.header('Content-type', 'text/html')
        fname = "".join(random.choice(string.letters) for i in range(4))
        lname = "".join(random.choice(string.letters) for i in range(7))
        u = User(name=fname
                ,fullname=fname + ' ' + lname
                ,password =542)
        web.ctx.orm.add(u)
        return "added:" + web.websafe(str(u)) \
                            + "<br/>" \
                            + '<a href="/view">view all</a>'

class view:
    def GET(self):
        web.header('Content-type', 'text/plain')
        return "\n".join(map(str, web.ctx.orm.query(User).all()))


if __name__ == "__main__":
    app.run()





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlalchemy Connection Pool 的相关文章

  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理 Hadoop系列 linux SSH原理解析 操作环境 CentOS 6 5 操作对象 用户A主机和远程主机B 正文部分 斜体加粗代表linux指令 linux下 非root用户免密码登录远程主机 ssh请转至此链接 XXXXX
  • Linux CentOS7命令及命令行

    Linux CentOS7中命令及命令行是非常重要的概念 对大多数初学者来说是既熟悉又了解甚少 本文初步讨论这方面的内容 与同行者交流 一 命令 命令又称为指令 英语命令 command 可用简写cmd表示 在终端命令行中执行的一段字符 一
  • QT5.14.2+VS2017环境安装

    1 下载Qt5 14 2以及qt vs插件 1 Qt官网下载地址 操作系统是win10企业版 在目录qt下找到程序qt opensource windows x86 5 14 2 exe 在目录vsaddin下找到程序qt vsaddin
  • 时间基础概念及Linux中的时间函数

    时间基础概念及Linux中的时间函数 时间相关概念 GMT 时间 UTC 时间 时区 Time Zone 夏令时 DST 本地时间 localtime Linux 系统中的时间 时钟基础概念 系统节拍数 jiffies Linux系统查看时
  • 生产者与消费者问题?

    生产者消费者模式是并发 多线程编程中经典的设计模式 简单来看 就是一个类负责生产 一个类负责消费 举例来说 一个变量 生产者不断增加这个变量 消费者不断减少这个变量 在互联网应用中 抢票机制就是应用了该模式 比如大麦网演唱会门票抢票 123
  • linux作业后台管理

    参考 http blog itpub net 26736162 viewspace 2142674 常用命令 参考http blog chinaunix net uid 26785297 id 3375270 html fg bg jobs
  • 一文搞清到底什么是 .NET?

    现在各种 NET 满天飞 别说新手了 连我这样的老手都差点被绕进去 到底什么是 NET 呢 通俗易懂 什么是 NET 什么是 NET Framework 什么是 NET Core 这篇文章好长呀 不知道你看完了没有 其实最关键的是核心的几个
  • 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。(C语言)基础版

    输入格式 输入分两行 分别在每行给出由若干个正整数构成的非降序序列 用 1表示序列的结尾 1不属于这个序列 数字用空格间隔 输出格式 在一行中输出两个输入序列的交集序列 数字间用空格分开 结尾不能有多余空格 若新链表为空 输出NULL in
  • session机制详解以及session的相关应用

    session是web开发里一个重要的概念 在大多数web应用里session都是被当做现成的东西 拿来就直接用 但是一些复杂的web应用里能拿来用的session已经满足不了实际的需求 当碰到这样的情况时候我们需要更加深入的理解sessi
  • layui 前端下载文件方法

    文件下载 function downLoadFile ids name 获取token var tableName layui data setter tableName 创建下载请求 var oReq new XMLHttpRequest
  • 学计算机的的用87键键盘可以吗,键盘87和108键区别

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 键盘87和108键区别是 1 87键的键盘有87个按键 108键的键盘有108个按键 2 108键的键盘在87键键盘的基础上增加了17个数字辅助按键和4个功能键 键盘 Ke
  • 【环境配置篇】保姆级教学之Ubuntu20.04上编译OpenCV+CUDA

    保姆级教学之Ubuntu20 04上编译OpenCV CUDA 自从发了上一期在Ubuntu20 04上配置深度学习环境的视频之后 我收到了很多小伙伴的反馈 其中有不少同学私信我表示 能不能教我怎么编译OpenCV呢 但其实在Ubuntu上
  • 【微服务笔记(九)】之Feign,Feign的负载均衡与熔断

    本文章由公号 开发小鸽 发布 欢迎关注 老规矩 妹妹镇楼 一 Feign 一 概述 之前使用Ribbon的负载均衡功能 简化了远程调用时的代码 但是每次调用都需要写基本相同的代码 代码重复性高 Feign可以把Rest的请求进行隐藏 伪装成
  • 【mobx】since strict-mode is enabled,changing (observed) values without using an action is not allowed

    问题描述 在用mobx做react的状态管理工具时 异步获取数据后 虽然页面获取到了数据并且渲染 但是控制台warnning 代码如下 ChannelStore js import makeAutoObservable from mobx
  • Matlab:比较和合并 MAT 文件--方便高效的批量处理

    Matlab 比较和合并 MAT 文件 方便高效的批量处理 MATLAB中 我们常常需要处理大批量的数据 而在处理这些数据时经常需要将多个MAT文件进行比较和合并 本文将介绍如何使用MATLAB的相关函数实现比较和合并MAT文件 一 比较M
  • Window10运行Docker踩过的坑

    Window10运行Docker踩过的坑 摘要 1 Docker for Windows 仅支持专业版 2 docker machine启动docker时 docker里的文件没了 3 docker安装Redis时配置文件出错 最近新装系统
  • Qt: QPushButton 常用样式设置(qss)

    1 设置上边框为2个像素 样式为实线 颜色为黑色 border top 2px solid 000000 2 设置上内边距为 8px 文字向下移动 padding top 8px 3 给文字加下划线 text decoration unde
  • visual studio 2019中文乱码

    文章目录 1 编码 1 code编码 2 控制台编码 3 txt文件编码 4 控制台编码 2 中文输出 1 更改 locale 显示中文 1 cout 与 wcout 2 ofstream 与 wofstream 3 printf 和 wp
  • java switch-case练习 常见题型

    一 使用 switch 把小写类型的 char型转为大写 只转换 a b c d e 其它的输 出 other 提示 String word scan next char c word charAt 0 switch c public cl
  • sqlalchemy Connection Pool

    sqlalchemy 默認的pool size 5 pool裡存放的是在跟數據庫的的閒置連接 使用c1 engine connect 或 session scoped session sessionmaker bind engine 會創建