【问题标题】:Python connecting to Access Database using pypyodbc: No default driver specifiedPython 使用 pypyodbc 连接到 Access 数据库:未指定默认驱动程序
【发布时间】:2018-09-13 06:30:48
【问题描述】:

我正在尝试将数据从一个非常简单的 Access 文件中获取到 Python 代码中。我按照视频中的说明进行操作:https://www.youtube.com/watch?v=zw9P2wSnoIo

我的代码如下:

import pypyodbc

con=pypyodbc.connect('DRIVER={Microsoft Access Driver(*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;{FIL=MS Access};DriverId=25;{DefaultDir=C:/Users/climate1/Documents/Test};DBQ=C:/Users/climate1/Documents/Test/dogs1.mdb;')
cursor=con.cursor()
cursor.execute("SELECT * FROM doggos")

for row in cursor,fetchall():
     print(row)

但它似乎无法找到正确的驱动程序,我收到此错误:

文件“doggos.py”,第 5 行,在 con=pypyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;{FIL =MS Access};DriverId=25;{DefaultDir=C:/Users/climate1/Documents/Test};DBQ=C:/Users/climate1/Documents/Test/dogs1.mdb;') init 中的文件“C:\Users\climate1\Documents\SaraCode\lib\site-packages\pypyodbc.py”,第 2454 行 self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly) 文件“C:\Users\climate1\Documents\SaraCode\lib\site-packages\pypyodbc.py”,第 2507 行,在连接中 check_success(self, ret) 文件“C:\Users\climate1\Documents\SaraCode\lib\site-packages\pypyodbc.py”,第 1009 行,在 check_success ctrl_err(SQL_HANDLE_DBC,ODBC_obj.dbc_h,ret,ODBC_obj.ansi) 文件“C:\Users\climate1\Documents\SaraCode\lib\site-packages\pypyodbc.py”,第 985 行,在 ctrl_err 引发错误(状态,err_text) pypyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified')

我对 python 并不陌生,但我对 windows 和 Access 都相当陌生。我正在使用 python 版本 3.6.3 并使用 pip install 下载了 pypyodbc。

我尝试过在 32 位和 64 位之间返回和第四位,并且还玩过一些基本的语法内容(正斜杠与反斜杠等)

【问题讨论】:

  • 我尝试将语法更改为上面的语法,但我仍然遇到同样的错误。当我检查我的驱动程序时,其中之一是“Microsoft Access Driver (*mdb)”,这是我正在调用的驱动程序,所以我不确定它为什么找不到它。
  • 我刚刚检查过,我的计算机是 64 位操作员,并且该驱动器在我的 ODBD 管理员中不存在 64 位。我怎样才能让它在 64 位系统上工作?

标签: python python-3.x ms-access pypyodbc


【解决方案1】:

ODBC 对驱动程序名称很挑剔,您的驱动程序名称缺少空格。

DRIVER={Microsoft Access Driver(*.mdb)}

不正确。应该是

DRIVER={Microsoft Access Driver (*.mdb)}

假设您使用的是 32 位 Python。

【讨论】:

  • 感谢您指出这一点!不幸的是,我添加了空格,但仍然遇到同样的错误。
  • @SGray2 ...根据您上面的评论,除了空间之外,您是否还为 mdb 扩展添加了一个句点,您的评论忽略了?您需要准确输入 ODBC 驱动程序的名称。另外,你的bit architecture of Python是什么?
  • @Parfait 它是 64 位的。而且我在代码中的驱动程序名称中确实有句点和空格。
  • @SGray2 - 您是否安装了 MS Office(或 MS Access)?如果有,是什么版本?
  • @Parfait 我有 2016 版 MSO (16.0.9126.2166) 32 位。我猜如果没有 64 位访问权限,我就无法获得 64 位 Microsoft Access 驱动程序?另外,当我保存访问文件以输入 python 时,视频建议将它们保存为 2003-2002 .mbd 文件而不是 .accdb 文件,所以这就是我一直在做的。
猜你喜欢
  • 2016-09-29
  • 2012-05-10
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多