如何使用pyodbc将MS Access连接到Python



我在使用pyodbc连接访问中的数据库时遇到问题。我看到了其他与我的代码几乎相同的示例代码:

import pyodbc 
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=PYODBC.accdb;UID=me;PWD=pass')
cursor = cnxn.cursor()
cursor.execute("SELECT Forename FROM Student")
row = cursor.fetchone()
if row:
    print(row)

我的机器在windows7家庭高级64位上运行。我有微软office 2010;32位我正在运行python 3.3;32位

我不知道它出了什么问题,我甚至没有收到错误消息,外壳打开了,但什么也没发生。非常感谢您的任何帮助

由于您同时使用32位版本的Microsoft Office和Python,因此一旦您有了正确的连接字符串,就应该可以使用了。它应该是这样的:

connStr = (
    r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};"
    r"DBQ=C:fullpathtoyourPYODBC.accdb;"
    )
cnxn = pyodbc.connect(connStr)

我使用的是Win10和Office 365,安装Microsoft Access Database Engine 2016 Redistributable 解决了我的问题

Microsoft Access数据库引擎2016可再分发

TLDR1-PYODBC连接不需要*.mdb和*.accdb。对我来说,两者都与错误相关

TLDR2-连接到32位驱动程序需要32位Python

TLDR3-有时PYPI没有编译的代码作为"pip-installsomemodule"的WHL,所以要么使用C++编译器,要么找到有WHL的Python版本,并使用该版本的Python

包括*.accdb返回错误。一旦我消除了*.accdb,就没有出现任何错误在未包含"DBQ="时也出现错误。

以下任一项似乎解决了错误;

    import pyodbc
    cnxn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb)};" + 
                          r"DBQ=C:fullpathtoyourPYODBC.accdb;"
                         )

或;

    cnxn = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb)};" + 
                          "DBQ=C:\full\path\to\your\PYODBC.accdb;"
                         )

同样对于"pipinstallpyodbc",我有一个错误错误:需要Microsoft Visual C++14.0或更高版本。用";Microsoft C++构建工具";

这是通过让PY的正确版本从PYPI请求一个已经编译为WHL的PYODBC版本来解决的。我安装PY3.8是因为PYPI(https://pypi.org/project/pyodbc/#files)没有可用于PY 3.9的预编译PYODBC WHL。那么pip安装pyodbc只是从PYPI收集了WHL,而不需要编译器。一切都很好。

DavidSheldon在Microsoft Visual C++14.0上的另一个响应是必需的(找不到vcvarsall.bat)表明setuptools升级可以解决这个问题,尽管我找不到这个问题的基础。

此外,由于我的操作系统只有32位MS Office,我不得不使用32位Python。

全部在Win10上。

相关内容

  • 没有找到相关文章

最新更新