【发布时间】:2017-07-06 08:12:05
【问题描述】:
我每天都在使用 python,非常重视数据库工作。
使用 pyodbc 我的标准启动类似于
connection_hostname = pyodbc.connect('connection_string')
cursor_hostname = connection_hostname.cursor()
command_hostname = 'select * from everything_forever;'
cursor_hostname.execute('command_hostname')
如果我需要将游标重用于另一个查询而不是创建新游标,我可以像这样存储第一个查询的结果集:
results_from_query = cursor_hostname.fetchall()
然后继续前进。
到目前为止,这种方法对我来说效果很好。
最近,我换了工作,当我演示上述技术时,我的一些通常使用 GUI 来处理他们的数据库的新同事开始恐慌。让他们失望的是光标关键字。我知道游标对 DB 来说是一个很大的禁忌,因为它们表明逻辑不是建立在集合论中的,倾向于将主机推入低/零级别的并行化和 RBAR 类型操作,但我不相信 ODBC 游标我'上面声明的 m 与我们戴上 SQL Server 工程和管理帽子时想到的游标相同。
谁能解释一下这些 ODBC 游标和 SQL Server 类型游标之间的区别(假设我是正确的,它们是不同的)?
如果我不正确,请赐教并告诉我如何更有效地与我的数据库交互。
为什么你不能直接从像这样的连接执行
connection_hostname.execute(command_hostname)
我觉得拥有 ODBC 游标结构与允许多个游标通过同一连接以降低连接成本等有关。离基地远吗?
【问题讨论】:
-
我也有这个问题。在获取行时,我有点看到需要游标。但是在执行 INSERT 或 UPDATE 时呢?我们真的需要 pyodbc 游标吗?为什么?
标签: python mysql sql-server database pyodbc