python - 64位Python可以连接32位MS访问驱动程序吗?

标签 python python-3.x ms-access-2010 pypyodbc

如何在 python 64 位中使用 32 位 MS 访问驱动程序进行 odbc 连接? 可以通过更改 pypyodbc 中的环境句柄或 odbc 常量,或者创建位转换文件来完成吗?
另一个想法(不确定是否可能):有没有办法在代码执行期间切换到 32 位 python.exe(仅当用户想要拉取访问数据库时)?本质上类似于...

如果调用了访问 api 并且 struct.calcsize("P") == 8: 打开python 32位解释器并连接到32位驱动程序

接受所有解决方案...谢谢

最佳答案

文章、论坛和SO Posts关于这个话题的内容比比皆是。

简而言之,您无法(在应用程序级别)将 64 位 Python.exe 连接到 32 位 MS Access ODBC 驱动程序 (odbcad32.exe),因为不同类型之间的数据存储和处理方式不同。然而与backwards compatibility ,建议以最低公分母工作,因为 64 位操作系统可以运行 32 位应用程序,并且相同级别的程序可以相互“对话”。

对于切换模式的动态设置,这可能是一个非常广泛的解决方法,因为 32 位 python.exe 和 64 位 python.exe 本质上是不同的已安装应用程序,其中 pypyodbc 等软件包彼此对应。因此,在安装两个版本之前,您需要使用以下任一脚本:

  1. 一个 python 版本自行退出并使用 platform or variable length calculation 调用其他版本正如您提到的:struct.calcsize("p");
  2. 在命令行(例如 shell 脚本、批处理文件);
  3. 通过外部程序(例如 Excel/Access VBA、Java、C#、php.exe);

外部应用程序需要根据已安装的 ODBC 驱动程序选择运行 python 脚本的版本,将注册表项视为指示符或变量类型大小。这可能还需要创建两个 python.exe 版本的路径变量,并确保它们不会相互冲突,选择一个作为 default .

许多人选择根据用户的 CPU 环境部署两个版本的应用程序。

关于python - 64位Python可以连接32位MS访问驱动程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686550/

相关文章:

python - 如何对键 :list dictionary by values in list? 进行排序

python - 在 Python 中定义函数时,如何将标题作为参数调用?

python - 如何在 Anaconda python 发行版中安装 Rodeo IDE?

sql - 查询过于复杂

sql - 访问 2010 : Syntax error (missing operator) in query expression

python - 如何判断两个字符串是否有共同的字符部分?--Python

python - 读取/写入 Excel 文件中的特定位置

python - 在区分大小写的文件系统上检查文件时,可以强制 os.path.isfile() 使用不区分大小写吗?

python-3.x - setup.py 与 conda 安装的依赖项(不是 pip)

ms-access - 从 *.cls 或类似文件以编程方式将模块导入 Access