2

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

if access api called and struct.calcsize("P") == 8: open python 32bit interpreter and connect to 32bit driver

对所有解决方案开放...谢谢

4

1 回答 1

5

关于这个主题的文章、论坛和SO 帖子比比皆是。

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

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

  1. 一个 python 版本,它自行退出并使用平台或可变长度计算调用其他版本,正如您提到的struct.calcsize("p")
  2. 在命令行(例如,shell 脚本、批处理文件);
  3. 通过外部程序(例如,Excel/Access VBA、Java、C#、php.exe);

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

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

于 2015-06-07T16:47:41.193 回答