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
相关推荐
张小凡vip3 分钟前
数据挖掘(十)---python操作Spark常用命令
python·数据挖掘·spark
U盘失踪了10 分钟前
Reqable 导出响应数据
python
2401_8590490814 分钟前
git submodule update --init --recursive无法拉取解决
前端·chrome·git
2301_7903009614 分钟前
数据分析与科学计算
jvm·数据库·python
-XWB-25 分钟前
【Oracle】Oracle诊断系列(2/6):锁问题与阻塞分析——解决“卡住”的会话
数据库·oracle
程序员小远29 分钟前
使用Postman进行一次完整的接口测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
这是个栗子32 分钟前
【Vue代码分析】前端动态路由传参与可选参数标记:实现“添加/查看”模式的灵活路由配置
前端·javascript·vue.js
Yvonne爱编码33 分钟前
JAVA数据结构 DAY1-集合和时空复杂度
java·数据结构·python
cqsztech36 分钟前
Oracle 26ai 2节点RAC 保姆级搭建步骤
数据库·oracle
DN202040 分钟前
AI销售机器人:节日祝福转化率提升30倍
人工智能·python·深度学习·机器学习·机器人·节日