首页 > 解决方案 > pyodbc vs ADO 通过 COM 用于 Python 脚本

问题描述

多年来,我公司一直使用win32com模块和ADO在Python脚本中通过ODBC连接数据库。我不喜欢 ADO,因为它很古老,而且 COM 本身就很慢,而且它往往会抛出一个我从未找到过解决方法的特定异常。我们使用 ODBC 是因为我们不能假设我们的客户有任何特定的数据库系统(尽管他们中的大多数使用 PostgreSQL)。我们有一个封装 ADO 并提供对 ADO 中大部分(可能是全部)功能的访问的类。我现在可以建议完全转换到 pyodbc。在此之前,我很好奇:通过 win32com 使用 ADO 是否有优势?它比pyodbc有更多的能力吗?

标签: pythonadopyodbc

解决方案


通过 win32com 使用 ADO 有什么好处?它比pyodbc有更多的能力吗?

实际上,特别是关于 ODBC,并非如此。ADODB 的优势在于能够将 OLEDB 提供程序用于具有 OLEDB 提供程序但没有 ODBC 驱动程序的数据库,但这种情况很少发生。(我能记得的唯一这样的数据库是“SQL Server Compact Edition”,很久以前就停产了。)

正如对问题的评论中提到的,pyodbc 的优点是在与数据库通信时避免额外的中间件层,即

你的 Python 应用程序 ↔ pyodbc ↔ ODBC 驱动程序管理器 ↔ ODBC 驱动程序 ↔ 数据库

对比

您的 Python 应用程序 ↔ win32com ↔ ADODB ↔ ODBC OLEDB 提供程序 ↔ ODBC 驱动程序管理器 ↔ ODBC 驱动程序 ↔ 数据库

如前所述,win32com/ADODB 是一种仅限 Windows 的技术,而 pyodbc 解决方案也可以部署在 Linux 或 Mac 上,如果这些平台有适当的 ODBC 驱动程序可用。


推荐阅读