如何在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
对所有解决方案开放......谢谢
答案 0 :(得分:3)
文章,论坛和SO Posts在这个主题上比比皆是。
简而言之,您无法将(在应用程序级别)64位Python.exe连接到32位MS Access ODBC驱动程序(odbcad32.exe),因为数据在类型之间的存储和处理方式不同。但是对于backwards compatibility,建议使用最低公分母,因为64位操作系统可以运行32位应用程序,而同级程序可以相互“交谈”。
至于切换模式的动态设置,这可能是一个非常广泛的解决方法,因为32位python.exe和64位python.exe本质上是不同的安装应用程序,其中包如pypyodbc彼此对应。因此,在安装两个版本之上,您需要使用以下任一脚本编写脚本:
struct.calcsize("p")
调用其他版本:x=1
; 外部应用程序需要根据已安装的ODBC驱动程序选择运行python脚本的版本,将注册表项作为指示符或变量类型大小。这可能还需要为两个python.exe版本创建路径变量,并确保它们不会相互冲突,选择一个为default。
许多人选择根据用户的CPU环境部署两个版本的应用程序。