如何完全删除sqlalchemy中的数据库连接?在任何地方 python 上给予 max_user_limit

How to completely remove database connection in sqlalchemy? Giving max_user_limit on python anywhere

我在 Pythonanywhere 上托管了一个 Flask 应用程序。我必须从数据库中进行一些查询的地方。在使用 MySQLdb 时,我能够关闭与数据库的所有连接并且不会出现任何错误。但是在使用 sqlalchemy 时,一些与数据库的连接不会关闭。

这是我的连接管理器 class,它定义了一个关闭数据库连接的方法。

class ConnectionManager:
    def __init__(self):
        self.base = declarative_base()

    def get_db_session(self):
        self.engine = create_engine(get_db_path())
        self.base.metadata.bind = self.engine
        self.session_maker = sessionmaker(bind = self.engine)
        self.session = self.session_maker()
        return self.session

    def persist_in_db(self,record):
        session = self.get_db_session()
        session.add(record)
        session.commit()
        session.close()

    def close_session(self):
        self.session.close()
        self.session_maker.close_all()
        del self.session
        del self.session_maker
        del self.engine
       #self.engine.dispose()

在从应用程序返回响应之前,我调用了 close_session 方法。 所以我的问题基本上是我在概念上哪里出错了,我怎样才能完全删除数据库连接。

这是由于connection pooling. You can disable connection pooling by using NullPool造成的。

self.engine = create_engine(get_db_path(), poolclass=NullPool)

不过要小心,如果每个 Web 请求都需要数据库连接,这在 Web 应用程序中可能不是一个好主意。