【问题标题】:pymssql versus pyodbc versus adodbapi versus... [closed]pymssql 与 pyodbc 与 adodbapi 与... [关闭]
【发布时间】:2012-01-11 00:35:07
【问题描述】:

我对数据库、执行 SQL 查询等相对较新。目前我专门将 MS SQL Server 用于我的数据库(这是我们在工作中使用的),但希望我的问题的答案可以比只针对那个特定的数据库。

我使用 DB 接口应用程序本身(在本例中为 SQL Server Management Studio)完成了大部分工作,但我也通过 python 脚本完成了一些工作,其中一些作为 cron 作业运行,其中一些是网站,以便用户可以向数据库提交查询。

我一直在使用 pymssql 模块从 python 查询和写入数据库。但是我遇到了一些恼人的问题。 (似乎pymssql不能使用临时表,而且我在“自动提交”方面也遇到了麻烦,但这可能是我自己的错。)

所以我对这方面的大部分内容一无所知,我只是想知道我应该往哪个方向发展。据我所知,我可以:

  • 使用 pymssql,它直接与 MS SQL 服务器对话
  • 使用 pyodbc,这需要先安装 FreeTDS 和 unixODBC,并进行设置
  • 使用adodbapi模块,我不确定这里需要什么要求。
  • 另一种方法??

问题是,我不完全了解 ODBC 的作用。这似乎是某种“身份验证中介”,有点像中间人,以确保用户是他/她所说的人。而且我对ADO的了解就更少了。

虽然 pymssql 似乎是最简单的方法,但它似乎也是人们不太重视的方法,并且最终会被弃用。我宁愿学习“正确”的方法,因为我刚刚开始接触这些东西。

因此,我正在寻找一些关于让 python 与 MS SQL Server 对话以及与一般 DB 对话的最佳方式的知识渊博的意见。我会将“最佳”定义为最适合会用它做适度复杂事情的人。 (虽然我才刚刚开始,但我最终将不得不加大力度。)

谢谢! 迈克

【问题讨论】:

    标签: python sql-server


    【解决方案1】:

    pyodbc(推荐)

    我几个月前就开始使用这个模块,到目前为止没有任何抱怨。开发社区似乎比 pymssql 更活跃。到目前为止,我没有安装问题(32 位 Win XP 和 64 位 Server 2008 R2)。您将获得额外的优势,即您不仅限于 MS SQL Server。

    如果您在 Windows 上安装,您可能会发现:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 很有帮助。

    pymssql

    我已经使用 1.x 版本大约 2.5 年了。我对大对象的大小限制有一些小问题。多线程时我也遇到了很多问题(如果关闭,我不得不关闭)。 1.x 基于已弃用的 MS 库。但是,最新版本是 2.x,不再使用这些已弃用的库。相反,它使用 FreeTDS(如 pyodbc)。听起来不错,但我还没试过。

    adodbapi

    大约一年前,我尝试关闭 pymssql 并用 adodbapi 替换它,但一些在 pymssql 上运行良好的查询无缘无故地失败了。我很快又放弃了 adodbapi。

    【讨论】:

    【解决方案2】:

    根据我的经验,这些天 PYODBC 有点问题。首先,它似乎不能正确或可靠地管理 unicode 字符串。其次,API 有点过时和特定,并且不太符合 Python DB-API (PEP-249)。

    我正在将项目代码迁移到 PYMSSQL,到目前为止,在我的测试过程中,它涵盖了上述两个问题的基础。我不知道此 API 有任何弃用,因为它似乎更新得有些频繁(2013 年 10 月的主要版本),文档或多或少是最新的并且处于活动状态。

    这些只是我目前在 PYODBC 和 PYMSSQL 方面的发现和进展。当然,一切都可能发生变化:)

    【讨论】:

    • 是的,pyodbc 经历了一个粗略的补丁,但它最近收到了一些 TLC,现在是officially supported by Microsoft
    • 今年早些时候(2017 年)有人提议停止使用 pymssql,请参阅 Proposal to discontinue pymssql in favor of pyodbcpymssql vs pyodbc。他们决定继续,但最后一个链接显示 pymssql 背后的社区正在努力寻找维护者。我认为现在 pyodbc 总体上似乎是一个更好的选择(根据您的需要,也许 pymssql 仍然更好)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多