在Windows上用Python连接ODBC的常见方法?

23 投票
6 回答
34890 浏览
提问于 2025-04-15 11:11

我在Windows上用Python连接ODBC时,应该用哪个库呢?有没有什么好的替代品可以用来代替pywin32?

我希望找到一些文档写得好、稳定、并且在持续维护的库。pyodbc看起来不错,还有其他选择吗?

6 个回答

7

另一个选择是 pypyodbc,这个库是用纯Python写的。可以把它看作是pyodbc模块的重新实现,代码量大约只有1800行,这样维护起来比较简单。

这里有一个 用pypyodbc访问mssql的Hello World示例

18

我使用SQLAlchemy来处理所有的Python数据库访问。我非常推荐使用SQLAlchemy。

在连接SQL Server数据库时,SQLAlchemy背后使用的是pyodbc。对于其他数据库,它会使用其他的DBAPI库,比如cx_Oracle。

这里有一个简单的例子,展示如何像使用DBAPI模块那样使用SQLAlchemy:

import sqlalchemy

engine = sqlalchemy.create_engine('sqlite:///database.db')
for r in engine.execute('SELECT * FROM T'):
    print(r.OneColumn, r.OtherColumn)

不过,SQLAlchemy真正的价值在于它的ORMSQL表达式语言。你可以看看,这些内容非常值得花时间去学习。

26

你已经提到过pyodbc,我也同意你的看法。

在我的使用经验中,它出现问题的情况最少。我之前用过pymssqladodbapi,当它们出现错误或者问题时,我就把代码换成了pyodbc,结果要么解决了问题,要么给出了更清晰的错误信息,让我能更快地找到问题所在。

值得一提的是,我主要用它来连接MSSQL Server数据库。

撰写回答