Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sqlalchemy如何结束与数据库的连接以防止死锁_Python_Sqlalchemy_Db2_Database Deadlocks - Fatal编程技术网

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

Python Sqlalchemy如何结束与数据库的连接以防止死锁,python,sqlalchemy,db2,database-deadlocks,Python,Sqlalchemy,Db2,Database Deadlocks,在我的项目中,我正在收听卡夫卡流并将消息放入数据库。我当前正在创建一个作用域会话以连接到我的数据库。在记录加载后是否有适当的方法关闭连接以避免死锁 我有一个try-catch-finally块来做这些事情,但我想知道哪一个是真正必要的: session.flush() session.expire_all() session.expunge_all() session.remove() session.close_a

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

我有一个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,

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

通过频繁提交、较小的批处理大小、并发查询的最佳访问计划和各种其他技术,可以最大限度地减少死锁或锁定超时的机会。编辑您的问题以添加Db2服务器平台(z/os、i-series、linux/unix/windows)和Db2服务器版本,因为有些技术是特定于平台或版本的。