pymssql与pyodbc对比adodbapi与...

Mik*_*son 24 python sql-server

我相对较新的数据库,执行SQL查询等.目前我专门为我的数据库使用MS SQL Server(这是我们在工作中使用的),但希望我的问题的答案可以更广泛而不仅仅是为了特别的DB.

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

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

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

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

事实是,我没有完全得到ODBC的作用.它似乎是某种"认证中介",有点像中间人,以确保用户是他/她说的人.而且我对ADO的了解甚少.

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

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

谢谢!麦克风

e1i*_*i45 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.

  • 正如2016年12月宣布的那样,pyodbc现在[由微软正式支持](https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/sql-server-python-whats-new/). (6认同)
  • 正如 2019 年 11 月宣布的那样,[pymssql 项目即将终止](https://github.com/pymssql/pymssql/issues/668) (5认同)
  • @Géraud pymssql 仍然受到积极支持。您提到的决定已被撤销,并且一个团队仍在做出贡献。 (2认同)

小智 9

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

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

这些只是我目前在PYODBC和PYMSSQL上的发现和进展.一切都要改变当然:)

  • 是的,pyodbc经历了一些粗略的补丁,但它最近收到了一些TLC,现在[由微软正式支持](https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/sql -server的Python-什么新/). (3认同)
  • 今年早些时候(2017年)有一个提议停止pymssql,请参阅[建议停止使用pymssql支持pyodbc](https://github.com/pymssql/pymssql/issues/477)和[pymssql vs pyodbc](https !//groups.google.com/forum/#话题/ pymssql/CLXHtLKBWig).他们决定继续,但最后一个链接显示pymssql背后的社区正在努力寻找维护者.我觉得现在pyodbc似乎是一个更好的选择(也许pymssql仍然更好,取决于你的需要). (3认同)