【问题标题】:Possible for 64bit Python to connect with 32bit MS access driver?64 位 Python 可以连接 32 位 MS 访问驱动程序吗?
【发布时间】:2015-06-06 19:05:32
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    关于这个主题的文章、论坛和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");
    2. 在命令行(例如,shell 脚本、批处理文件);
    3. 通过外部程序(例如,Excel/Access VBA、Java、C#、php.exe);

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

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

    【讨论】:

    • 谢谢,我们可以讨论一下如何进行方法 1 吗?我已经通过 32 位 python 测试了 odbc 连接,它可以工作。现在计划在执行中期优雅地在两者之间切换
    • 创建了一个关于 1 的新问题。stackoverflow.com/questions/30716663/…
    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2011-08-03
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多