连接Python和MS-Access,而无需安装新软件

时间:2019-07-03 08:23:08

标签: python database ms-access pyodbc

我想将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位。

2 个答案:

答案 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 或 IP 地址。记下这些地址。

如果您现在拥有代理服务器 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