我想将Python连接到MS-Access,但是无法安装新软件(程序/驱动程序),并且在公司PC上工作时没有管理员权限。有解决方法吗?
我可以得到pyodbc软件包,但是由于我的Python是64位的,而MS-Access是32位的,所以我希望这是错误的来源。实际上,没有64位MS-Access驱动程序,而只有SQL服务器:
import pyodbc
print(pyodbc.drivers.())
>>> ['SQL Server']
产生的错误如下:
import pyodbc
conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=path\file.accdb;')
>>> InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source
name not found and no default driver specified (0) (SQLDriverConnect)')
如前所述,我既不能安装32位Python,也不能安装64位驱动程序(至少看来我不能)。我尝试根据此answer by Mike Müller设置新环境以安装32位Python,但是它导致出现“ CondaHTTPError”,但我无法修复-答案here并没有为我工作。
是否可以将pyodbc连接到32位驱动程序?在swashek's answer中,这可能有效
%windir%\SysWOW64\odbcad32.exe
但是我不确定在Python的什么地方或如何应用它。
将Python连接到MS-Access之后,我的最终目标是提取访问查询,以便在Python中复制表,这些表是在Access中基于Access数据创建的。有没有完全不同的方式或方法?
更多信息:我正在使用Spyder和Anaconda 64位。
答案 0 :(得分:1)
64位Python之类的64位应用程序不能使用32位驱动程序,而32位应用程序不能不能使用64位驱动程序。根本不可能。
您的计算机上装有Microsoft Office Professional Plus 2013,当您从64位Python执行pyodbc.drivers()
时,Access驱动程序不会出现,因此我们可以假定您具有32位版本的Office。 / p>
因此,最直接的解决方案是将32位Python与Office安装的32位ACE驱动程序(Microsoft Access Driver (*.mdb, *.accdb)
)一起使用。
或者,您可以从32位Office 2013切换到64位Office 2013,然后您的64位Python可以使用64位ACE驱动程序。
答案 1 :(得分:0)
我遇到过类似的情况,机器被限制配置并且位于公司防火墙内。我们无法安装或修改已为公司设置配置的任何应用程序。您还提到您遇到了 "CondaHTTPError"
。这可能意味着您的应用程序被阻止连接到 Internet。我还假设您的工作站安装了 Anaconda 作为您公司的一部分您可能需要找出您公司的 IE 连接到的代理服务器,以便您也可以让 conda 使用它。
如果由于某种原因您的 IT 无法向您提供它,并且如果您可以通过 Internet Explorer 访问 Internet,则它可能有一个自动配置脚本或其中设置了代理服务器。在 IE 浏览器中查看 Tools -> Internet Options
。然后在 Connections
选项卡上,单击 LAN Settings
按钮。要么:
如果这些文本框被禁用并且地址太长而无法阅读,请检查您是否可以打开计算机的注册表编辑器 (Win+r -> regedit
)。
如果 IE 有自动配置脚本:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
并查找 AutoConfigURL
。如果您现在拥有代理服务器 URL,则可以执行 answer you found:
http_proxy=<url>
https_proxy=<url>
set CONDA_FORCE_32BIT=1
conda create -n py27_32 python=2.7
我还可以使用它从 pip 安装我以前无法安装的库。
pip --proxy <url> install xlwings