我对数据库,执行SQL查询等相对较新。目前我专门为我的数据库使用MS SQL Server(这是我们在工作中使用的),但希望我的问题的答案可能比只针对那个特定的数据库。
我使用数据库接口应用程序本身(在本例中为SQL Server Management Studio)做了很多工作,但我也通过python脚本做了一些工作,其中一些作为cron作业运行,其中一些是用户可以在DB中提交查询的网站。
我一直在使用pymssql模块查询&从python写入DB。但是我遇到了一些恼人的问题。 (似乎pymssql不能使用临时表,而且我也遇到了“自动提交”的麻烦,但这可能是我自己的错。)
因此对大部分内容一无所知,我只想了解一下我应该走的方向。据我所知,我可以:
事情是,我没有完全获取ODBC的功能。它似乎是某种“认证中介”,有点像中间人,以确保用户是他/她说的人。而且我对ADO的了解甚少。
虽然pymssql似乎是最简单的方法,但它似乎也是人们认为不那么高的,并且它最终会被弃用。我宁愿学习“正确”的方式,因为我刚刚开始使用这些东西。
所以我正在寻找一些知识渊博的观点,让我们了解如何让python与MS SQL Server交流,以及与DB进行通信。我会将“最佳”定义为最适合那些会用它做适度复杂事情的人。 (虽然我刚刚开始,但我最终还是要提升一点。)
谢谢! 麦克
答案 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上的发现和进展。当然可以改变:)