sqlalchemy The transaction is active - has not been committed or rolled back.

连接池参考

参考:https://blog.csdn.net/SunJW_2017/article/details/129332393

1、因为使用了连接池,没有释放

2、解决方法:

复制代码
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
from greenlet import getcurrent as get_ident


class Service(object):
    def __init__(self):
        from common import con_sql

        self.engine = create_engine(
            con_sql,
            echo=true,  # 显示SQL
            # poolclass=NullPool,  # 不使用连接池
            pool_size=5,  # 连接池大小
            max_overflow=5,  # 允许增加连接数
            pool_pre_ping=True,  # 在每次使用连接进行数据库操作前,先检验一下连接是否有效。有效就直接使用;无效则重新连接
            pool_recycle=7200  # 多久之后对线程池中的线程进行一次连接的回收(重置),单位(秒)
        )

        self.session_factory = sessionmaker(bind=self.engine)
        self.db_session = scoped_session(self.session_factory, get_ident)

    def __del__(self):
        self.dispose()

    def dispose(self):
        try:
            if self.db_session:
                self.db_session.remove()
                self.db_session.close()
                self.db_session = None
            if self.session_factory:
                self.session_factory = None
            if self.engine:
                self.engine.dispose()
                self.engine = None
        except Exception as _ex:
            pass
相关推荐
Gauss松鼠会几秒前
GaussDB(DWS) SQL性能问题案例集
java·数据库·经验分享·spring boot·后端·sql·gaussdb
weixin_468466854 分钟前
目标识别算法落地实战:从选型到部署的全流程指南
图像处理·人工智能·python·算法·目标检测·机器视觉·目标识别
六月雨滴5 分钟前
Oracle Data Guard 完全解析及与 RMAN 的核心区别
数据库·oracle·dba
程序猿乐锅5 分钟前
【MySQL | 第二篇】: 函数、约束、多表查询和事务
android·数据库·mysql
treesforest10 分钟前
如何查IP归属地?IP地址归属地查询的三种方式与选型指南
网络·数据库·网络协议·tcp/ip
NiceCloud喜云11 分钟前
Anthropic 发布 Project Glasswing:未公开模型 Mythos 已挖出 10000+ 漏洞,含 OpenBSD 27 年老 bug
android·java·数据库·c++·python·docker·bug
雷工笔记11 分钟前
SQL系列1:AI排查SQL语句中的幽灵
数据库·sql
Cosolar13 分钟前
Milvus向量数据库学习手册
数据库·学习·架构·milvus
云水一下14 分钟前
HTML5 从入门到精通:语义为王——结构标签让网页会“说话”
前端·html5
Bigger15 分钟前
mini-cc 的 Provider 抽象层是怎么设计的
前端·ai编程·claude