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
相关推荐
伯远医学2 分钟前
RIP-seq 高分文献案例分享
java·前端·javascript·人工智能·算法·eclipse·html
hunterandroid3 分钟前
[鸿蒙从零到一] LazyForEach 复用陷阱与 KeyGenerator 设计实战
前端
OPEN-F3 分钟前
Python进阶教程:Git版本控制与团队协作
git·python·elasticsearch
Hilaku9 分钟前
Web Components 为什么火不起来?
前端·javascript·程序员
lq_bog9 分钟前
spring事务失效
java·数据库·spring
Liora_Yvonne14 分钟前
从数据库到 Vue 页面:用 LY Fullstack 完成第一个真实全栈业务模块
前端·后端·nestjs
ellenwan202615 分钟前
2026年量化入门:先连起概念、规则和简单实现
人工智能·python
词却18 分钟前
数据库基础:MySQL 安装与基础操作
数据库·mysql
hunterandroid19 分钟前
自定义 View 绘制与触摸冲突:从滑动卡顿到事件分发闭环
android·前端
vancece23 分钟前
JS实现堆 & 215.数组中的第K个最大元素
java·前端·javascript