【问题标题】:Preferable number of cursor.excute() statement for a cursor in cx_Oraclecx_Oracle 中游标的首选 cursor.execute() 语句数
【发布时间】:2017-10-05 08:00:58
【问题描述】:

我是 cx_Oracle 的新手,我推荐了 Mastering Oracle+Python, Part 1: Querying Best Practices 。现在,在 Cursor Objects 部分下,文档说,我引用了

"您可以使用 Connection 对象的 cursor() 方法定义任意数量的游标。简单的程序只需要一个游标就可以了,可以反复使用。更大的项目可能需要几个不同的光标。”

现在这似乎很主观,请问有多少 cursor.execute() 语句可以用于单个游标,应该每个游标 连接和关闭每个执行语句以更安全,就像这样。

cursor = connection.cursor()
cursor.execute('some query - insert,delete,upate,select')
#result = cursor.fetchall() # or some other way to obtain result if required
cursor.close() 

或者为每个函数设置一个游标,然后重用该游标来执行该特定函数中的语句。

而且查询的类型是否也会影响选择。

【问题讨论】:

    标签: python oracle cx-oracle


    【解决方案1】:

    您可以在单个游标上执行任意数量的 cursor.execute() 方法调用,并且无需在每次执行后关闭游标。每个游标都需要一定数量的内存,并且打开/关闭游标需要一定数量的计算时间,但这些都是相对较小的数量。在大多数程序中,这不是问题。

    希望能回答您的问题!

    【讨论】:

      【解决方案2】:

      您引用的语句是正确的,根据需要定义任意多个,但如果您的代码只需要一个,则使用一个。 请记住,游标正在使用内存,因此使用的越少越好。 如果您需要同时打开 2 个游标,则执行此操作,如果一个足够,则使用 1。

      【讨论】:

      • 你也可以回答这个问题,在创建和关闭语句之间有多少 cursor.execute() 是可以的。
      • 您需要执行的查询数量没有限制或可接受的数量。
      • 因此,“简单程序只需一个光标就可以正常工作”的说法意味着创建一个光标并执行任意次数,然后关闭它。您还可以向我推荐一个很好地解释光标的博客或文档。我读了cx-oracle.readthedocs.io/en/latest/cursor.html,但这并没有解释游标的用途、connection.cursor 的作用以及其他相关的事情。
      • 将其视为执行语句所需的数据库上下文
      • 你能不能详细点,你的陈述有点简洁,可能是因为我是新手
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2015-11-29
      相关资源
      最近更新 更多