zen*_*inc 6 python mysql database sql-server pyodbc
我每天都使用python,重点是数据库工作.
使用pyodbc我的标准开头是类似的
connection_hostname = pyodbc.connect('connection_string')
cursor_hostname = connection_hostname.cursor()
command_hostname = 'select * from everything_forever;'
cursor_hostname.execute('command_hostname')
Run Code Online (Sandbox Code Playgroud)
如果我需要将光标重用于另一个查询而不是创建一个新的游标,我可以存储第一个查询的结果集,如下所示:
results_from_query = cursor_hostname.fetchall()
Run Code Online (Sandbox Code Playgroud)
然后继续前进.
到目前为止,这种方法对我来说效果很好.
最近,我改变了工作,当我演示上述技术时,一些通常使用GUI来处理数据库的新同事开始感到恐慌.设置它们的是cursor关键字.我理解游标对于DB来说是一个很大的禁忌,因为它们表明逻辑没有建立在集合论中,倾向于将主机推入低/零级并行化和RBAR类型操作,但我不相信ODBC游标我'当我们使用SQL Server工程和管理帽时,上面的声明与我们想到的游标相同.
有人可以解释这些ODBC游标和SQL Server类型游标之间的区别(假设我是正确的,它们是不同的)?
如果我不对,请告诉我并告诉我如何更有效地与我的数据库进行交互.
为什么你不能直接从像这样的连接执行
connection_hostname.execute(command_hostname)
Run Code Online (Sandbox Code Playgroud)
我觉得有ODBC游标结构,因为它们允许多个游标通过相同的连接来降低连接成本等.离开基地?
数据库游标受到 DBA 的谩骂和不信任,通常是有充分理由的。它们通常是性能问题的根源,而基于集合的方法几乎总是更好。
“在我的工作场所,我们的 SQL Server 标准禁止使用游标。为了使用游标,我们必须证明游标的性能比以其他方式处理行更好。”
为了过度简化,您可能会向紧张的朋友解释,Python 游标实际上是其他语言所谓的记录集或结果集的同义词,并且他们的 GUI 工具也在使用游标/记录集(但不是在数据库上创建游标) !)。
| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |