64位Python是否可以与32位MS Access驱动程序连接? - python

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

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

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

python大神给出的解决方案

关于该主题的文章,论坛和SO Posts很多。

简而言之,您不能将64位Python.exe(在应用程序级别上)连接到32位MS Access ODBC驱动程序(odbcad32.exe),因为在两种类型之间简单地存储和处理不同的数据。但是,对于backwards compatibility,建议使用最低公分母,因为64位OS可以运行32位应用程序,并且同一级别的程序可以彼此“交谈”。

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

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

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

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