6

这是我尝试过的:

- 通过搜索找到 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”和“\”作为字母,这些是打印错误的特殊字符

4

4 回答 4

6

DSN= 仅用于系统或用户 DSN。

对于 DSN 文件,您需要使用 FILEDSN=c:\myDsnFile.dsn

http://www.connectionstrings.com/是您最好的朋友。

于 2010-07-15T01:10:44.407 回答
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。

于 2011-12-22T16:54:31.570 回答
1

我使用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文件。

于 2010-07-16T09:04:02.963 回答
1

使用 pyodbc 列出您的 odbc 连接以查看您在使用什么是明智的。确保使用适当的 pyodbc 32 位 Python 32 位驱动程序。如果您想使用 64 位访问文件,您应该使用提供驱动程序的 64 位 MS Access。

sources = pyodbc.dataSources()
keys = sources.keys()
for key in keys: 
   print key
于 2015-02-18T14:57:19.720 回答