如何将 pyodbc 连接到 Access (.mdb) 数据库文件
Posted
技术标签:
【中文标题】如何将 pyodbc 连接到 Access (.mdb) 数据库文件【英文标题】:How to connect pyodbc to an Access (.mdb) Database file 【发布时间】:2010-07-15 00:51:14 【问题描述】:这是我尝试过的:
-通过搜索找到Vista的ODBC数据源管理器*,
-添加新的文件数据源*,选择 Microsoft Access 驱动程序 (*.mdb),然后选择我感兴趣的 mdb 文件,
-从 python shell 导入 pyodbc 并尝试:
pyodbc.connect("DSN=<that Data Source I just created>")
我收到以下错误消息(葡萄牙语**):
Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Nome da fonte de dados n\xe3o encontrado e nenhum driver padr\xe3o especificado (0) (SQLDriverConnectW)')
翻译为“未找到数据源名称且未指定标准驱动程序”。
我做错了什么? 如何正确处理? 另外,我在网上搜索了文档,但没有发现任何有价值的文档,有人可以推荐任何文档吗?
*名称可能不完全准确,因为我的 Windows 是葡萄牙语。
**不,葡萄牙语没有 '3' 和 '\' 作为字母,这些是打印错误的特殊字符
【问题讨论】:
【参考方案1】:DSN= 仅用于系统或用户 DSN。
对于 DSN 文件,您需要使用 FILEDSN=c:\myDsnFile.dsn
http://www.connectionstrings.com/ 是你最好的朋友。
【讨论】:
【参考方案2】:我在使用 pyodbc 时遇到了类似的问题,但不是 Access 而是不同的 ODBC 驱动程序。
这对我有帮助。 http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/ (这里是相应的知识库文章,以防此 URL 消失。http://support.microsoft.com/kb/942976/en-us)
我们以前的服务器硬件已经死机,我们不得不在 64 位操作系统上快速重新部署,因为这就是我们可用的全部。使用普通的 ODBC 管理工具,我添加了适当命名的 DSN,但它仍然声称没有找到它。只有在运行 ODBC 管理员的特殊 32 位版本时,我才能定义我的脚本使用 pyodbc 可以找到的 DSN。
【讨论】:
【参考方案3】:我使用 odbc
模块(包含在 ActiveState Python 中),但测试了 pyodbc
并且对我有用:
#db = odbc.odbc('northwind')
#db = odbc.odbc('Driver=Microsoft Access Driver (*.mdb);Dbq=Nwind.mdb;Uid=;Pwd=;')
#db = pyodbc.connect('Driver=Microsoft Access Driver (*.mdb);Dbq=Nwind.mdb;Uid=;Pwd=;')
db = pyodbc.connect('DSN=northwind')
当然,带注释的连接也可以。
我将 nothwind
配置为用户 DSN,因此您可能必须将 ODBC 数据库连接配置为用户 DSN 或系统 DSN,或者无需在 ODBC 管理器中进行配置,您可以使用 ConnectString 指向您的 .mdb
文件。
【讨论】:
【参考方案4】:使用 pyodbc 列出您的 odbc 连接以查看您在使用什么是明智的。确保使用适当的 pyodbc 32 位 Python 32 位驱动程序。如果您想使用 64 位访问文件,您应该使用提供驱动程序的 64 位 MS Access。
sources = pyodbc.dataSources()
keys = sources.keys()
for key in keys:
print key
【讨论】:
以上是关于如何将 pyodbc 连接到 Access (.mdb) 数据库文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pyodbc 连接到具有用户定义函数的 MS Access 文件