Sqlalchemy如何结束与数据库的连接以防止死锁

问题描述 投票:0回答:1

在我的项目中,我正在听一个kafka流,并将消息放入数据库中。我当前正在创建一个范围限定的会话以连接到我的数据库。是否有适当的方法在记录加载后关闭连接以避免死锁?

我有一个try-catch-finally块可以完成这些事情,但是我想知道其中哪一个实际上是必要的:

        session.flush()
        session.expire_all()
        session.expunge_all()
        session.remove()
        session.close_all()

如果有帮助,在创建连接时,我还将使用具有以下设置的连接池:

 ENGINE = sqlalchemy.create_engine(f'db2+ibm_db://{CONNECTION_STRING}', echo=False,
                                      pool_timeout=60, pool_recycle=30, pool_size=30, max_overflow=5,
python sqlalchemy db2 database-deadlocks
1个回答
0
投票

[session.commit()session.close()应该足以释放会话持有的所有锁。

© www.soinside.com 2019 - 2024. All rights reserved.