python - 重用游标与创建新游标的权衡是什么?

标签 python sql database oracle cx-oracle

在 cx_Oracle(或一般的 Oracle)中,是否可以为每个查询分配一个游标,或者在多个查询中重用一个游标。

def getSomeData(curs):         # case 1: pass in a cursor, which is generally
    curs.execute('select ...') #         reused across queries
    return curs.fetchall()

def getSomeData(conn):         # case 2: pass in a connection,allocate
    curs=conn.cursor()         #         a cursor for this query
    curs.execute('select ...')
    return curs.fetchall()

当然,这两种方法都返回相同的数据。

这两种方法之间的权衡是什么?一个效率特别高还是低?在许多查询上重复使用游标是否存在任何潜在的陷阱?

最佳答案

您可以随心所欲地重复使用 cx_Oracle 游标,没问题。如果您在短时间内执行数千个小查询,您可能通过重新使用游标看到轻微的性能提升,但我对此表示怀疑。

我有时会创建新游标,有时会重新使用现有游标,具体取决于它是否使代码更易于阅读和理解。

例如,如果我有各种需要访问数据库的过程,我可能会传递一个 Oracle 连接对象,或在该连接上创建的游标。

只要能让您的代码更具可读性和更易于维护,这就是我所追求的。

关于python - 重用游标与创建新游标的权衡是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2035212/

相关文章:

PHP读取数据库中的字段

python - Pandas 将字典连接到数据框

python - DjangoRestFramework 未验证要求 = True

sql - Rails 迁移在另一个表中创建条目时更新现有记录

mysql - 根据值更新数据库

ruby-on-rails - PG::UndefinedTable:错误:表缺少 FROM 子句条目

python - 根据唯一条目的数量按组计算比例

Python-将字符串与列表中的随机项目进行比较

sql - Oracle SQL 使用动态列名转置

php - 无法在codeigniter和oracle中使用数据库查询