关于这个主题的文章、论坛和SO 帖子比比皆是。
简而言之,您不能(在应用程序级别)将 64 位 Python.exe 连接到 32 位 MS Access ODBC 驱动程序 (odbcad32.exe),因为不同类型之间的数据存储和处理方式不同。然而,由于向后兼容性,建议以最低公分母工作,因为 64 位操作系统可以运行 32 位应用程序,并且相同级别的程序可以相互“对话”。
至于切换模式的动态设置,这可能是一个非常广泛的解决方法,因为 32 位 python.exe 和 64 位 python.exe 本质上是不同的已安装应用程序,其中 pypyodbc 等软件包彼此对应。因此,在安装这两个版本之前,您需要使用以下任一脚本编写:
- 一个 python 版本,它自行退出并使用平台或可变长度计算调用其他版本,正如您提到的
struct.calcsize("p")
:
- 在命令行(例如,shell 脚本、批处理文件);
- 通过外部程序(例如,Excel/Access VBA、Java、C#、php.exe);
外部应用程序需要根据已安装的 ODBC 驱动程序、将注册表项作为指示器或变量类型大小来选择将运行 Python 脚本的版本。这可能还需要为两个 python.exe 版本创建路径变量,并确保它们不会相互冲突,选择一个作为default。
许多人会根据用户的 CPU 环境选择部署两个版本的应用程序。