用于 32 位 python (3.6) 的 32 位 pyodbc 可与 Microsoft 的 64 位 odbc 驱动程序配合使用。为什么?

32bit pyodbc for 32bit python (3.6) works with microsoft's 64 bit odbc driver. Why?

我能观察到的:

设置有效。

另外:粗略测试发现,以上设置可以成功连接到Microsoft server2008(64bit) 运行ning sql2012(64bit) [=38=下的配置] ] 为空(意思是,缺少 32 位 dll),而默认的 64 位网络连接配置包含通常的配置选项,如 ip 地址和侦听端口信息。

我自己的解释:
[1] 客户端和服务器的 OS 和 ODBC 接口可以是任何 32/64 位组合,但通过我的计算机和 sql 计算机之间的网络传输的协议将是相同的。
[2] 32 位 python+pyodbc 可以与微软的 64 位 odbc 驱动程序通信,因为... 32 位 python 知道如何使用 64 位 DLL...?

32 位应用程序无法调用 64 位 dll,因此 python32 位肯定无法与 64 位驱动程序通信。

sql 服务器的 msodbc 驱动程序本质上是一个 dll 文件:msodbcsql13.dll

我刚刚发现(微软甚至没有提到)"odbc for sql server 13.1 x64" 将在 system32 中安装 64 位 msodbcsql13.dll,在 SysWOW64 中安装 32 位 msodbcsql13.dll(32 位版本的 "system32" 在 64 位 windows 系统上)

但是我不能确定 32 位客户端与 64 位 sql 服务器之间的网络协议与 64 位客户端与 64 位 sql 服务器之间的网络协议相同。但是,我相信,一旦客户端向服务器发出网络请求,32 位或 64 位就不再重要了。有人请对此发表评论