如何为 cross-platform 测试创建 ODBC "DSN"?

How to create ODBC "DSN" for cross-platform testing?

我需要一个 WIN 上的简单 ODBC 测试场景,我可以非常简单地配置它,并确保它可以支持 Unix.SE 上的另一个问题。

简而言之,我正在尝试在 KVM/QEMU 虚拟系统 (192.168.1.12) 中设置从 Debian 10 (192.168.1.2) 到 Windows 10 的 PyODBC/Python 脚本连接.

首先,在 Windows 10/KVM 上,我看到 ODBC Data Source Administrator 有一个选项卡 File DSNMicrosoft Text Driver我可以使用 FileDSN 测试 Python PyODBC 连接到 ODBC 使用简单的 CSV 文件代替服务器吗?(我对 ODBC 的研究只找到 运行 服务器实例).

接下来,我尝试的是:

SO 处的类似页面:

ODBC“文件 DSN”不是用于访问文件中数据的 driver。这是一种将 DSN(目标数据库的连接信息)指定为独立 文件 中的值的方法,而不是 Linux 上的标准配置文件中的值(例如,/etc/odbc.ini) 或在 Windows 注册表中。

如果您需要“克隆”一个 Windows DSN 条目以便在 Linux 环境中使用,那么您可能会发现我的 dump_dsn 实用程序很有帮助。它从 Windows 注册表中检索一个 ODBC DSN,并以一种您可以用来在 Linux.

上重新创建 DSN 的形式呈现它

例如,假设我在 Windows 上有一个名为“mssql199”的 DSN,当我在 运行 dump_dsn.to_text("mssql199") 上得到

[mssql199]
Driver=ODBC Driver 17 for SQL Server
Description=with UseFMTONLY
Server=192.168.0.199
Database=myDb
Encrypt=No
TrustServerCertificate=No
ClientCertificate=
KeystoreAuthentication=
KeystorePrincipalId=
KeystoreSecret=
KeystoreLocation=
UseFMTONLY=Yes
Trusted_Connection=No

要在 Linux 盒子上使用相同的 DSN,我必须

  1. 将该块复制到 /etc/odbc.ini(或等同于“系统 DSN”)或 ~/.odbc.ini(对于“用户 DSN”)以使用 DSN=mssql199,或
  2. [ODBC] header 而不是 [mssql199] 将该块保存到文件中,例如 /home/gord/mssql199_file.dsn (对于“文件 DSN”)并使用 FILEDSN=/home/gord/mssql199_file.dsn

Edit 回复:“我可以使用 FileDSN 来测试 Python PyODBC 连接到 ODBC 使用简单的 CSV 文件代替服务器吗??”

没有。 Windows 框上的 ODBC DSN 或 FILEDSN 仅对连接 Windows 框 数据有用源(本地或其他机器上)。我们无法将一台机器(例如Linux)连接到另一台机器上的ODBC DSN条目

我创建了一个 SQLite 数据库。然后我添加了 SQLite drivers for ODBC.