无法使用 Python 打开访问数据库

Posted

技术标签:

【中文标题】无法使用 Python 打开访问数据库【英文标题】:Unable to Open access database using Python 【发布时间】:2018-08-27 15:16:31 【问题描述】:

我无法使用 python 打开访问数据库。下面是代码和错误信息。我什至尝试去控制面板检查 odbc 文件的路径指向的位置。它显示在正确的路径中。 %windir%\syswow64\odbcad32.exe 不确定如何避免此消息,下面的代码还显示了可用的驱动程序。

import pyodbc


def show_odbc_sources():
    sl = []
    source = odbc.SQLDataSources(odbc.SQL_FETCH_FIRST)
    while source:
        dsn, driver = source
        sl.append('%s [%s]' % (dsn, driver))
        source = odbc.SQLDataSources(odbc.SQL_FETCH_NEXT)
    sl.sort()
    print('\n'.join(sl))


if __name__ == '__main__':
    show_odbc_sources()

conn = pyodbc.connect(r'driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\\Users\\username\\Desktop\\E CX DB.accdb;')
cursor = conn.cursor()

我得到的错误:

Excel Files [Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)]
MS Access Database [Microsoft Access Driver (*.mdb, *.accdb)]
Sample Amazon Redshift DSN [Amazon Redshift (x64)]




---------------------------------------------------------------------------
InterfaceError                            Traceback (most recent call last)
<ipython-input-12-816aa9101ab7> in <module>()
     16         show_odbc_sources()
     17 
---> 18 conn = pyodbc.connect(r'driver=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\\Users\\username\\Desktop\\E CX DB.accdb;')
     19 cursor = conn.cursor()

InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

【问题讨论】:

Access 是否需要任何特定于 Access 的 ODBC 驱动程序? @JoshuaSchlichting 那是我拥有的 32 位版本的驱动程序。我也检查了其他人提供的解决方案是一样的。 ***.com/questions/28708772/…。这是之前分享的一种解决方案。 查看pyodbc.drivers()返回的列表,看看里面是否有Access ODBC驱动。 @GordThompson 这些是驱动程序列表 Excel 文件 [Microsoft Excel 驱动程序 (.xls, *.xlsx, *.xlsm, *.xlsb)] MS Access 数据库 [Microsoft Access 驱动程序 ( .mdb, *.accdb)] 示例 Amazon Redshift DSN [Amazon Redshift (x64)] @RenLyke - 这不是 pyodbc 返回的列表形式。我在问 pyodbc 将什么视为可用驱动程序列表,而不是您当前的代码返回的内容。 【参考方案1】:

我的驱动是32位的。

您似乎正在运行 64 位版本的 Python,因此 pyodbc 无法看到 32 位版本的 Access ODBC 驱动程序。您需要切换到 32 位版本的 Python 或切换到 64 位版本的 Access ODBC 驱动程序。

【讨论】:

以上是关于无法使用 Python 打开访问数据库的主要内容,如果未能解决你的问题,请参考以下文章

Python 子进程无法访问 .bat 文件,因为它被另一个进程使用

文件无法打开访问被拒绝 怎么解决

无法从Vagrant访问Google Cloud SDK for Python的本地开发服务器

无法使用 Zencart 访问数据库

Access数据表无法导入excel表,显示向导无法访问文件中的信息,这是为啥?

无法打开Photoshop,显示另一个程序正在使用此文件,进程无法访问。