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

时间:2015-06-06 19:05:33

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

如何在python 64bit中使用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

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

1 个答案:

答案 0 :(得分:3)

文章,论坛和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")调用其他版本:x=1;
  2. 在命令行(例如,shell脚本,批处理文件);
  3. 通过外部程序(例如,Excel / Access VBA,Java,C#,php.exe);
  4. 外部应用程序需要根据已安装的ODBC驱动程序选择运行python脚本的版本,将注册表项作为指示符或变量类型大小。这可能还需要为两个python.exe版本创建路径变量,并确保它们不会相互冲突,选择一个为default

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