我尝试使用pyodbc访问MS Access .mdb数据库。我已经设置了ODBC驱动程序,驱动程序已经注册到我的DSN,我可以在$db = new mysqli($server, $username, $password, $database);
找到
pyodbc.dataSources()
结果:
sources = pyodbc.dataSources()
dsns = list(sources.keys())
dsns.sort()
sl = []
for dsn in dsns:
sl.append('%s [%s]' % (dsn, sources[dsn]))
print('\n'.join(sl))
因此,我尝试使用此命令访问数据库:
Excel Files [Microsoft Excel Driver (*.xls)]
MS Access DB [Microsoft Access Driver (*.mdb, *.accdb)]
MS Access Database [Microsoft Access Driver (*.mdb)]
dBASE Files [Microsoft dBase Driver (*.dbf)]
但是,我一直收到这个错误:
con = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=H:\access-panda\data\myDB.mdb;')
我试图解决这个问题..但没有运气。我错过了什么吗?
答案 0 :(得分:1)
pyodbc.dataSources()
生成的列表具有误导性,因为它显示了32位和64位“平台”的结果。在具有32位Office的计算机上,在64位Python下运行代码将生成列表
Excel Files [Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)]
MS Access Database [Microsoft Access Driver (*.mdb, *.accdb)]
但如果我们打开64位ODBC管理器,我们会发现它们都是32位“平台”
并且相关的驱动程序将不可用于在64位Python下运行的pyodbc。
获取可用驱动程序列表的更可靠方法是使用
drivers = pyodbc.drivers()
print(drivers)
这应该只显示特定“平台”可用的驱动程序(即64位或32位Python)。