【问题标题】:does pyodbc have any design advantages over pypyodbc?pyodbc 与 pypyodbc 相比有什么设计优势吗?
【发布时间】:2013-01-22 16:42:02
【问题描述】:

我知道pyodbc 是一个较旧的项目,可能更具功能性和健壮性,但是它的设计(基于已编译的 C 代码的组件)有什么东西可以使它比纯 Python 实现更可取,例如 @ 987654322@?

我做了很多 ETL 工作,并且正在考虑从 Linux/Jython/JDBC 方法切换到 Windows/Cygwin/Python/ODBC 方法。

【问题讨论】:

  • 根据我对不同数据库的经验,JDBC 驱动程序的错误少于 ODBC 驱动程序。我认为 JDBC 更受欢迎。我还发现 JDBC 更易于使用。您可以直接从 Jython 使用它,因此请继续使用 Jython 和 JDBC :-)
  • 我更喜欢通过 JDBC 从 Linux 平台进行连接,但是我的应用程序是用 Django 编写的,并且 django-jython 已经过时,这意味着 Django ORM 无法用于我的 ETL 工作。还有用 C 组件编译 Python 包的问题。

标签: python odbc etl pyodbc pypyodbc


【解决方案1】:

pyodbc 相对于pypyodbc 的潜在优势是:

用 Python 编写的pypyodbc 相对于pyodbc 的潜在优势是:

  • 不太可能包含 C 指针问题
  • 不太可能包含内存分配问题
  • 维护更简单;高级语言意味着更少的代码行数
  • 更容易安装,没有编译问题,需要为不同版本的 Python、平台等单独构建

成熟的优势:

  • 错误更少
  • 更全面的功能覆盖
  • 更好地处理极端情况

成熟度很大程度上取决于pyodbc 不会出错。根据我过去的经验(大约 2016 年),这不是真的,它有 fair number of memory leak 错误等。但从那时起,pyodbc 得到了显着改进,现在是 properly maintained

作者声称pypyodbc 是Python 中pyodbc 代码的重新实现,这意味着功能覆盖率应该是等效的。不过,可能有一些在较新的代码中尝试较少的极端情况。

免责声明:我还没有尝试过pypyodbc

【讨论】:

  • 我的印象是每次发布新版本的 Python 时都需要重新编译 pyodbc。当然,当我尝试在具有 Python 3.4 的(Windows)机器上安装最新版本的 pyodbc 时,pyodbc 安装程序抱怨它找不到 Python 3.3。我没有摆弄它,而是安装了 pypyodbc(通过 pip),它工作正常。此外,我在 SO 上看到了许多案例,通过迁移到 pypyodbc 解决了 pyodbc 的问题。
  • 我在 pypyodbc 中遇到了“utf-8 编解码器无法解码”类型错误的问题,而我在 pypyodbc 中没有遇到
  • 过去四年情况发生了变化。有关最近的讨论,请参阅 this question。 FWIW,我现在使用 pyodbc。
  • 是的,确实 pyodbc 现在得到了更好的维护并且有很好的错误修复。我已经更新了我的答案以反映这一点。
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 2016-07-04
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 2012-12-09
  • 2011-09-27
相关资源
最近更新 更多