cx_Oracle模块游标在python中关闭

时间:2015-04-24 09:05:43

标签: python cx-oracle

我在python中使用cx_Oracle模块。我们需要明确关闭打开的游标吗?当我们在获取数据并仅关闭连接对象(con.close())而没有发出cursor.close()之后错过关闭游标会发生什么?

在这种情况下是否有任何内存泄漏的可能性?

2 个答案:

答案 0 :(得分:1)

根据the documentation of cx_Oracle,游标应该被自动垃圾回收,并且应该没有泄漏风险

但是,根据我的轶事经验,如果我没有明确关闭光标,进程的内存使用量会无限增长——这可能与我使用自定义 rowfactory 有关系,我必须在 lambda 中捕获光标(尽管理论上,GC 也应该能够处理这种情况)。

由于 Cursor 类实现了上下文管理器模式,您可以安全方便地编写:

with connection.cursor() as cursor:
    cursor.execute("...")

答案 1 :(得分:0)

如果使用多个光标。 cursor.close()将帮助您释放不再需要的资源。 如果您只使用一个游标与一个连接。我认为connection.close()很好。