我每天都在进行与数据库相关的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一起工作的新同事,在我展示以上技术时开始恐慌。他们感到不安的是游标关键字。我了解游标在DB中是个大忌,因为它们表示不基于集合论的逻辑,往往会将主机推入低/零并行级别和RBAR类型操作中,但我不认为我声明的ODBC游标与我们戴上SQL Server工程师和管理员帽子时所考虑的游标相同。
有人能解释一下这些ODBC游标和SQL Server类型游标之间的区别吗(假设我正确地认为它们是不同的)?
如果我不正确,请启迪我并告诉我如何更有效地与我的DB进行交互。
为什么不能直接从连接中执行,例如:
connection_hostname.execute(command_hostname)
我觉得保持ODBC游标结构不变是为了允许通过同一连接使用多个游标以降低连接成本等原因。这种想法是否太离谱了?