在不安装新软件的情况下连接 Python 和 MS-Access
Connect Python and MS-Access without Installing New Software
我想将 Python 连接到 MS-Access,但无法安装新软件 (programs/drivers),而且我在公司 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 位驱动程序(至少看起来我不能)。我尝试设置一个新环境以安装 32 位 Python 根据此 but it resulted in a "CondaHTTPError", which I wasn't able to fix - the answers here 对我不起作用。
是否可以选择将 pyodbc 连接到 32 位驱动程序?从 swashek's answer 起,这可能有效
%windir%\SysWOW64\odbcad32.exe
但我不确定在 Python 中的何处或如何应用它。
将 Python 连接到 MS-Access 后,我的最终目标是提取 Access 查询,以便复制 Python 中的表,这些表是在 Access 中基于 Access 数据创建的。有什么完全不同的方式或方法吗?
更多信息:我正在使用 Spyder 和 Anaconda 64 位。
64位应用程序像64位Python不能使用32位驱动,32位应用程序不能 使用 64 位驱动程序。根本不可能。
您的计算机上装有 Microsoft Office Professional Plus 2013,当您从 64 位 pyodbc.drivers()
Python 执行 pyodbc.drivers()
时,Access 驱动程序不会出现,因此我们可以假设您有 32-位版本的 Office。
因此,最直接的解决方案是使用 32 位 Python 和 Office 安装的 32 位 ACE 驱动程序 (Microsoft Access Driver (*.mdb, *.accdb)
)。
或者,您可以从 32 位 Office 2013 切换到 64 位 Office 2013,然后您的 64 位 Python 可以使用 64 位 ACE 驱动程序。
我遇到过类似的情况,机器配置受限并且位于公司防火墙内。我们无法安装或修改任何已为公司设置配置的应用程序。您还提到您遇到了 "CondaHTTPError"
。这可能意味着您的应用程序被阻止连接到互联网。我还假设您的工作站安装了 Anaconda 作为您公司的一部分您可能需要找出您的 IE 连接到的公司的代理服务器,以便您也可以让 conda 使用它。
如果由于某种原因您的 IT 无法为您提供它,并且您可以通过 Internet Explorer 访问互联网,则可能是它设置了自动配置脚本或代理服务器。在您的 IE 浏览器中查看 Tools -> Internet Options
。然后在 Connections
选项卡上,单击 LAN Settings
按钮。或者:
- 您应该会在“使用自动配置脚本”下的文本框中看到一个地址
- 或在代理服务器下查看地址。
如果这些文本框被禁用并且地址太长而无法阅读,请检查您是否可以打开计算机的注册表编辑器 (Win+r -> regedit
)。
如果 IE 有自动配置脚本:
- 导航到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
并查找 AutoConfigURL
。
- 复制该地址并将其粘贴到您的浏览器中。它可以下载或让您打开文件。在记事本中打开它。
- 根据文件的内容,您可能能够找到用于将流量重定向到该特定地址的 URLs 或 IP 地址。记下这些地址。
如果您现在有代理服务器 URL,您可以执行 :
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
我想将 Python 连接到 MS-Access,但无法安装新软件 (programs/drivers),而且我在公司 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 位驱动程序(至少看起来我不能)。我尝试设置一个新环境以安装 32 位 Python 根据此
是否可以选择将 pyodbc 连接到 32 位驱动程序?从 swashek's answer 起,这可能有效
%windir%\SysWOW64\odbcad32.exe
但我不确定在 Python 中的何处或如何应用它。
将 Python 连接到 MS-Access 后,我的最终目标是提取 Access 查询,以便复制 Python 中的表,这些表是在 Access 中基于 Access 数据创建的。有什么完全不同的方式或方法吗?
更多信息:我正在使用 Spyder 和 Anaconda 64 位。
64位应用程序像64位Python不能使用32位驱动,32位应用程序不能 使用 64 位驱动程序。根本不可能。
您的计算机上装有 Microsoft Office Professional Plus 2013,当您从 64 位 pyodbc.drivers()
Python 执行 pyodbc.drivers()
时,Access 驱动程序不会出现,因此我们可以假设您有 32-位版本的 Office。
因此,最直接的解决方案是使用 32 位 Python 和 Office 安装的 32 位 ACE 驱动程序 (Microsoft Access Driver (*.mdb, *.accdb)
)。
或者,您可以从 32 位 Office 2013 切换到 64 位 Office 2013,然后您的 64 位 Python 可以使用 64 位 ACE 驱动程序。
我遇到过类似的情况,机器配置受限并且位于公司防火墙内。我们无法安装或修改任何已为公司设置配置的应用程序。您还提到您遇到了 "CondaHTTPError"
。这可能意味着您的应用程序被阻止连接到互联网。我还假设您的工作站安装了 Anaconda 作为您公司的一部分您可能需要找出您的 IE 连接到的公司的代理服务器,以便您也可以让 conda 使用它。
如果由于某种原因您的 IT 无法为您提供它,并且您可以通过 Internet Explorer 访问互联网,则可能是它设置了自动配置脚本或代理服务器。在您的 IE 浏览器中查看 Tools -> Internet Options
。然后在 Connections
选项卡上,单击 LAN Settings
按钮。或者:
- 您应该会在“使用自动配置脚本”下的文本框中看到一个地址
- 或在代理服务器下查看地址。
如果这些文本框被禁用并且地址太长而无法阅读,请检查您是否可以打开计算机的注册表编辑器 (Win+r -> regedit
)。
如果 IE 有自动配置脚本:
- 导航到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
并查找AutoConfigURL
。 - 复制该地址并将其粘贴到您的浏览器中。它可以下载或让您打开文件。在记事本中打开它。
- 根据文件的内容,您可能能够找到用于将流量重定向到该特定地址的 URLs 或 IP 地址。记下这些地址。
如果您现在有代理服务器 URL,您可以执行
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