Python Access数据库查询给予"未找到数据源名称"

时间:2018-03-05 18:41:03

标签: python ms-access pyodbc

每当我尝试使用Python脚本查询文件时,都会收到以下错误

  

pyodbc.InterfaceError:(' IM002',u' [IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序(0)(SQLDriverConnect)&# 39)

Image of Error Message

我的代码如下:

conn = pyodbc.connect ("DRIVER={ODBCDataFile [Microsoft Access Driver 
(*.mdb, *.accdb)]};DBQ=C:\Users\jmtr\Documents\IRST_old.accdb;")

cur = conn.cursor()
cur.execute("SELECT Name, CAI, Email, SSPLocation, BUNUM from Tbl_SSP")

我的Access数据库是" Microsoft Access 2016 32位"。我也在使用" 32位" python 2.7.13和32位PYODBC。而且,我在ODBC数据源管理器中设置了32位驱动程序:

Image of ODBC 32-bit

我不明白为什么我仍然收到此错误消息?

3 个答案:

答案 0 :(得分:1)

连接字符串不正确。括号authors没有ODBCDataFile个关键字。只需删除它们并将 DRIVER 分配给已安装的ODBC驱动程序,如屏幕截图所示:

[...]

答案 1 :(得分:0)

我认为你拼错了ODBCDataFile而不是ODBCFile

但是在python中,字符\是字符串中的转义字符。你需要附加前缀r"DRIVER..."来强制原始字符串,所以不要错过解释转义字符。

答案 2 :(得分:0)

如果您还没有,请先下载并安装 Microsoft Access Database Engine 2010 Redistributable

然后你应该安装 pyodbc 模块。

现在你可以连接访问数据库了:

ConFileName=(r'c:\mydb\myaccess.mdb')
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + ConFileName + ';')
cursor = conn.cursor()

要从数据库中的任何表中进行选择,请使用以下简单代码:

ConFileName=(r'c:\mydb\myaccess.mdb')
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + ConFileName + ';')
cursor = conn.cursor()
cursor.execute('select * from table1')
for row in cursor.fetchall():
    Table1Array.append((row[0],row[1],row[2])
print(str(len(Table1Array))+" records in Table1 loaded successfully.")

您可以点击此链接以获取有关使用 Pyton 的 MS Access 的更多信息:

https://elvand.com/python-and-ms-access/