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

asd*_*sdf 2 python ms-access-2010 python-3.x pypyodbc

如何在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

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

Par*_*ait 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 环境选择部署两个版本的应用程序。