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
相关推荐
Zfox_1 小时前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
陈丹阳(滁州学院)4 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle
远方16094 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
老胖闲聊4 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1185 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之5 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
GUIQU.5 小时前
【Oracle】数据仓库
数据库·oracle
coding随想6 小时前
JavaScript ES6 解构:优雅提取数据的艺术
前端·javascript·es6
小小小小宇6 小时前
一个小小的柯里化函数
前端
lyaihao6 小时前
使用python实现奔跑的线条效果
python·绘图