python_sqlalchemy

2023-11-01

SQLAlchemy使用和踩坑记 - 知乎

2、长时间未请求连接自动断开

现象:长时间服务端没有连接数据库,数据库连接自动断开

原因:1、sqlalchemy在create_engine时,使用连接池并没有指定连接池回收时间,则连接池的连接不会自动被回收,并默认使用QueuePool进行连接池管理,调用session.close(),不会断开连接,2、数据库,例如mysql会设置一个wait_timeout(默认8个小时),当连接空闲8个小时,则自动断开

解决方案:

  • 方案一:修改数据库的设置 wait_timeout(不推荐)
  • 方案二:新建连接池时,设置连接回收时间,使这个值小于wait_timeout,sqlchemy的create_engine一些重要参数如下:
create_engine重要参数:
  pool_size:连接数,采用了惰性思想,例如:pool_size=10,如果项目中只使用了5个,则连接池中的连接数,只有5个,但当项目同时使用了10个连接,则后续连接池中的连接数为10个
  max_overflow:超出连接数时,允许再新建的连接数,例如:pool_size=10,max_overflow=8,最大连接数18个,但其中8个不在使用时,直接回收,连接池中的连接数为10个
  pool_timeout:等待可用连接时间,超时则报错,默认为30秒
  pool_recycle:连接生存时长,超过则该连接被回收,再生存新连接,可把这个值改成小于wait_timeout;设置-1时,则不回收连接
  • 方案三:不使用链接池,在create_engine时指定连接池为NullPool,则使用session.close()后断开数据库链接
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import NullPool


class DbHandler(object):
    def __init__(self):
        self.db_addr = "XXXXXX"

    def create_session(self):
        engine = create_engine(self.db_addr, poolclass=NullPool)
        session = sessionmaker(bind=engine)()
        return session

3、全局session在多进程下被断开

想象:sqlalchemy连接池,经常报错:mysql server has gone away

原因:父进程创建子进程,子进程会使用父进程的数据连接,当子进程执行完成,断开数据库的连接,则全局session和连接被释放,后续要使用连接数据库时,则报错

解决方案:多进程中,尽量没有进程新建连接和session

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

python_sqlalchemy 的相关文章

  • Python 中的空填字游戏求解器

    我得到了一个包含填字游戏蓝图的矩阵 当然 它是空的 我们的目标是填补整个难题 这是 Checkio 的一项任务 我已经为此奋斗了相当长一段时间 根据我对复杂性的理解 这个问题没有完美的算法 不过 必须有最好的方法来做到这一点 对吧 我尝试了
  • 如何配置 VS Code 以便能够单步执行调试 Python 脚本时加载的共享库 (.so)?

    从命令行使用 gdb 我可以在加载共享库时中断 知道我有共享库的源代码 如何在 VS Code 中获得相同的行为 对我来说 它以某种方式起作用 这是我的设置 Ubuntu 18 04 调试我从 Python3 加载的 C 共享库 更具体地说
  • PyTorch 如何计算二阶雅可比行列式?

    我有一个正在计算向量的神经网络u 我想计算关于输入的一阶和二阶雅可比矩阵x 单个元素 有人知道如何在 PyTorch 中做到这一点吗 下面是我项目中的代码片段 import torch import torch nn as nn class
  • 如何在Python中绘制“Trace Explorer”?

    我需要重新创建一个情节 踪迹浏览器 https www bupar net trace explorer html与下面在 R 中创建的类似 我希望使用 matplotlib 但找不到任何有关如何执行这样的跟踪资源管理器的示例或参考 有人能
  • 如何在 PyCharm 社区版中运行 Django 项目的调试服务器?

    有人在 PyCharm 社区版中为 Django 项目设置调试配置时遇到问题吗 IDE 的社区版缺少项目设置中的项目类型选项 然后当我设置 调试 或 运行配置 时 它会要求我提供应该运行的脚本 Django 需要什么脚本 manage py
  • 按自定义年度频率重新采样

    我知道我可以使用 AS JUL 从 7 月 1 日开始每年重新采样 但在不同的日期之前我该如何做 In 11 df Out 11 value date 2005 07 02 4 2005 09 20 7 2005 11 12 4 2005
  • 将 *.appspot.com 重定向到自定义域:Google 应用引擎 (Django)

    我直接将我的一些示例代码放在这里以获得更好的了解 url py r robots txt myapp views robots r myapp views home views py def home request my code ret
  • 查找提供的 Sum 值的组合

    我有一系列这样的数字 myvar 57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186 现在我想计算所有这些可能的组合 长度为1到20 其总和等于给定的数字m
  • lxml 属性需要完整的命名空间

    下面的代码使用 lxml python 3 3 从 Excel 2003 XML 工作簿中读取表格 该代码工作正常 但是为了通过 get 方法访问 Data 元素的 Type 属性 我需要使用键 urn schemas microsoft
  • 动态组装 Python 模块,动态导入

    我正在努力让自己熟悉importlib钩子 我想实现直接导入用其他语言编写的非Python文件并维护源映射的能力 因此提高SyntaxError带有行号的 s 仍然会给出有意义的堆栈跟踪 我加载外部文件的方法是组装 Pythonic 源代码
  • HTML 和 BeautifulSoup:当结构事先不知道时如何迭代解析?

    我从一个简单的 HTML 结构开始 如下所示 感谢 alecxe 的帮助 我能够创建这个 JSON 字典 u Outer List u Inner List u info 1 u info 2 u info 3 使用他的代码 from bs
  • 保持 WebSocket 连接处于活动状态

    我正在研究 WebSocket 协议 并尝试在后端使用 Python 实现一个简单的 ECHO 服务 它似乎工作正常 但连接建立后立即断开 这是我的客户
  • 从 Python 调试 C 库 (ctypes)

    我有一个使用 ctypes 和 C 共享库 dll 文件 的 Python 程序 作为 IDE 我使用 Eclipse 其中将开发两个项目 C 共享库和使用它的 python 程序 我的想法是 当我在调试模式下启动Python程序时 我可以
  • 合法 .xlsx 文件上的 openpyxl load_workbook() 会导致 zipfile.BadZipFile 错误

    我试图做的是将数据帧数据附加到现有的合法 Excel 文件中 我使用了 openpyxl 中的 load workbook 函数 但它系统地返回错误 这是一些在我的机器上崩溃的代码 from openpyxl import load wor
  • 无法使用 pandas 获取平均日期

    我有一个时间序列数据集 我想从中获取平均日期 这是一个人为的示例 显示 pandas datetime64 对象的溢出错误 import pandas as pd import numpy as np rng pd date range 2
  • python - 从完整地址获取邮政编码

    我有一个数据框 其中一列中有完整地址 我需要创建一个仅包含邮政编码的单独列 有些地址只有五位数字的邮政编码 而其他地址则有额外的四位数字 如何拆分列以获取邮政编码 示例数据 d name bob john address 123 6th S
  • dump() 缺少 1 个必需的位置参数:python json 中的“fp”

    我正在尝试美化 json 格式 但收到此错误 import requests as tt from bs4 import BeautifulSoup import json get url tt get https in pinterest
  • Discord-py Rewrite - Cog 中的基本 aiohttp Web 服务器

    我正在尝试将基本的 aiohttp 网络服务器集成到 Cog 中 使用 discord py 重写 我对齿轮使用以下代码 from aiohttp import web import discord from discord ext imp
  • 阅读 setup.py 中的 README

    所以 我想要long description我的设置脚本的内容是我的README md文件 但是当我这样做时 源代码发行版的安装将失败 因为python setup py sdist不复制自述文件 有没有办法让distutils core
  • Django ALLOWED_HOSTS 与 CORS(django-cors-headers)

    ALLOWED HOSTS 和 CORS 之间有什么区别 如果我定义了 ALLOWED HOSTS 我还需要定义 CORS 吗 我没有使用 django 模板 我也有可能动态定义这两个吗 我认为没有 我使用 django 作为后端 并在不同

随机推荐

  • [Samuel Ko]——我的2020年回顾

    0 写在前面 其实一直以来 CSDN博客就完全是我个人的技术成长方面的记录和总结 由于工作的原因 一些更新 更好的资料没办法上传上来 之前的CSDN对我来讲 更像是一个纯技术文档 在这已经几年了 也完全没有发一些关于个人的动态或者经历 现在
  • MySQL批量插入数据的四种方案(性能测试对比)

    关注后回复 进群 拉你进程序员交流群 本文记录个人使用MySQL插入大数据总结较实用的方案 通过对常用插入大数据的4种方式进行测试 即for循环单条 拼接SQL 批量插入saveBatch 循环 开启批处理模式 得出比较实用的方案心得 一
  • 上传文件(Servlet)

    HttpServletRequest 类 法 Part 类 法
  • Python深度学习-U2:神经网络的数学基础

    理解深度学习 需要熟悉很多简单的数学概念 张量 张量运算 微分 梯度下降等 本章就是建立对这些概念的直觉 MNIST数据集 包括 60 000张训练图片和 10 000张测试图像 解决 MNIST问题是深度学习的 Hello World 神
  • Mybatis Plus基础07 type-aliases-package配置(实体对象扫描包)

    学习目标 简化操作 配置 type aliases package实体对象扫描包 学习产出 1 为什么配置这个 简单的说就是简化一个操作步骤 简化哪里的操作 简化xml文件中resultType中指定路径配置 2 哪里配置 在项目的appl
  • linux部署项目

    linux部署项目 一 安装jdk 1 二 安装tomcat 1 官网下载tomcat 官网地址 https tomcat apache org 2 部署项目 将下载的tomcat文件放入linux文件夹下 输入命令 tar zxvf ap
  • 离线pip安装paddlepaddle时存在的问题

    由于内网限制 只能从清华源安装软件包 而清华源没有满足条件的paddlepaddle安装包 为了成功在内网环境安装paddlepaddle 可以按照如下步骤 在开始使用 飞桨 源于产业实践的开源深度学习平台 官网平台 按照操作系统 计算平台
  • JDBC数据库连接 及JDBC使用讲解

    目录 1 什么是JDBC 2 JDBC 作原理 3 JDBC 使 3 1 创建项目并添加MySQL驱动 DataSource实现操作数据库 3 2 使用代码操作数据库 1 什么是JDBC Java 数据库连接 是 种 于执 SQL 语句的
  • 用Python编写代码,实现输出自己的姓名,班级,学号等信息

    可以使用以下代码实现输出自己的姓名 班级 学号等信息 name 你的姓名 class name 你的班级 student id 你的学号 print 姓名 name print 班级 class name print 学号 student
  • shell-环境变量以及环境变量的配置文件

    环境变量定义 用户自定义变量只在当前的shell中生效 而环境变量会在当前shell和这个shell的所有子shell当中生效 如果把环境变量写入相应的配置文件 那么这个环境变量就会在所有的shell中生效 设置环境变量 export 变量
  • Unity Shader小技巧-制作Shader时在Scene显示实时动态效果

    直接上截图 在编辑shader时 我们会使用到很多动态效果 例如 Time的函数 但是在Unity中会是静态效果 点击这个选项之后就以看到Scene窗口的Shader有动态效果了
  • malloc函数的使用

    调用被调函数 将主函数中动态内存分配的内存中的数据放大十倍 malloc动态分配了1字节的内存空间 最多能存放的整数是255 int型变量并不是一定占4字节 C语言从来没有规定一个整型必须要强制占几字节 C语言只规定了 短整型的长度不能大于
  • ASP.net DropDownList数据绑定及使用详解

    1 dropdownlist 绑定数据 1 1 固定绑定 适合已经固定的数据绑定到dropdownlist 实例
  • vue3中知识点总结(持续更新)

    1 具名插槽 Vue3 具名插槽 Named Slots 文档地址 具名插槽添加
  • java并发怎么理解_java中并发的理解

    在java中谈到并发 我们一定会想到两种锁 一种synchronized锁 一种ReentrantLock 还有一种轻量级的作用在变量上的volatile 那么他们三个有什么具体区别 和具体怎么用呢 下面针对他们三个分别说一下原理和作用 v
  • ArcGIS 正高转换成椭球体高度

    转载 https resources arcgis com zh cn help main 10 1 index html 009t000001vm000000 一 椭球体高度与正高 具体讲解可见 https resources arcgi
  • Fabric加密算法

    BCCSP Blockchain crypto provider 即区块链加密提供商 用于定义选择使用的密码学实现库 负责摘要生成 非对称密钥的签名与验证 根据证书查找私钥等 该模块提供了一系列的接口 这些接口定义了摘要的生成方法 签名 验
  • 负载均衡之Keepalived

    严格意义来说 Keepalived主要是通过虚拟路由冗余来实现高可用功能 但是其也可以借助IPVS实现负载均衡 所以也简要的学习了一下 简介 起初是设计来监控集群中各个节点的状态 根据TCP IP模型中网络层 ICMP控制消息请求 传输层
  • QFileInfo

    一 描述 QFileInfo 提供有关文件系统中文件的名称和位置 路径 访问权限 文件类型等信息 FileInfo 还可用于获取有关 Qt 资源的信息 这个类是隐式共享的 二 成员函数 2 1 判断函数 1 bool isAbsolute
  • python_sqlalchemy

    SQLAlchemy使用和踩坑记 知乎 2 长时间未请求连接自动断开 现象 长时间服务端没有连接数据库 数据库连接自动断开 原因 1 sqlalchemy在create engine时 使用连接池并没有指定连接池回收时间 则连接池的连接不会