【问题标题】:How to connect pyodbc to an Access (.mdb) Database file如何将 pyodbc 连接到 Access (.mdb) 数据库文件
【发布时间】: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' 和 '\' 作为字母,这些是打印错误的特殊字符

【问题讨论】:

    标签: database ms-access windows-vista odbc pyodbc


    【解决方案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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-10-20
            • 1970-01-01
            • 2011-09-09
            • 1970-01-01
            • 2012-05-09
            • 2011-09-17
            • 2016-10-09
            相关资源
            最近更新 更多