pymssql与pyodbc对比adodbapi与...

时间:2012-01-11 00:35:08

标签: python sql-server

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

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

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

因此对大部分内容一无所知,我只想了解一下我应该走的方向。据我所知,我可以:

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

事情是,我没有完全获取ODBC的功能。它似乎是某种“认证中介”,有点像中间人,以确保用户是他/她说的人。而且我对ADO的了解甚少。

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

所以我正在寻找一些知识渊博的观点,让我们了解如何让python与MS SQL Server交流,以及与DB进行通信。我会将“最佳”定义为最适合那些会用它做适度复杂事情的人。 (虽然我刚刚开始,但我最终还是要提升一点。)

谢谢! 麦克

2 个答案:

答案 0 :(得分:18)

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。

答案 1 :(得分:9)

根据我的经验,PYODBC现在有点问题。首先,它似乎没有正确或可靠地管理unicode字符串。其次,API有点过时且具体,而且不太符合Python DB-API(PEP-249)。

我正在将项目代码迁移到PYMSSQL,在我的测试中,到目前为止,它涵盖了上述两个问题的基础。我不知道这个API的任何弃用,因为它似乎经常更新(2013年10月的主要版本),文档或多或少是最新的,并且是活跃的。

这些只是我目前在PYODBC和PYMSSQL上的发现和进展。当然可以改变:)