我在使用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上。