使用我的 qodbc API 中的关键字参数参数化 pyodbc 连接字符串?

Parameterize pyodbc connect string using keyword arguments from my qodbc API?

帮助我了解我是否可以为 QuickBooks 的 pyodbc connection to this qodbc 接口参数化我的连接字符串:

pyodbc.connect(r'DSN=qremote_dsn;IPAddress=192.168.0.50;Port=4500;RemoteDSN=login_dsn;OpenMode=F;OLE DB Services=-2;', autocommit=True)

我有几个不同的 DSN、RemoteDSN 和服务器,我想循环访问它们。几个 SO 帖子(here and here) point to this code.google documentation 建议我可以使用 字符串、关键字或两者 和 pyodbc 的 connect 函数。

pyodbc 使用许多不同的 odbc API,那么如何确定 any pyodbc 关键字是否会映射到我需要的 qodbc 关键字?

我在pyodbc documentationreturns中搜索qodbc关键字没有结果。我必须断定 f 弦是我唯一的选择吗?

Must I conclude f-strings are my only option?

完全没有。

pyodbc 是为处理 any ODBC 驱动程序而构建的,因此它不会识别哪些关键字是 "legal" 哪些不是。正如所解释的 here 有一些关键字是由 DBAPI 规范指定的,还有一些保留给 pyodbc 内部使用的关键字,它们 "are not passed to the odbc driver" 暗示其他关键字 传递给 ODBC 驱动程序。

示例:当我使用此 connect 调用时...

cnxn = pyodbc.connect(
    driver="ODBC Driver 17 for SQL Server",
    server="192.168.0.179,49242",
    database="myDb",
    uid="sa", pwd="_whatever_",
    trusted_connection="no"
)

...ODBC 跟踪显示这是传递给驱动程序的连接字符串

[ODBC][2404][1589493655.363466][SQLDriverConnectW.c][290]
        Entry:
            Connection = 0xf7d9c0
            Window Hdl = (nil)
            Str In = [driver=ODBC Driver 17 for SQL Server;server=192.168.0.179,49242;database=myDb;uid=sa;pwd=_whatever_;trusted_connection=no;][length = 122 (SQL_NTS)]

请注意 trusted_connection 特定于 SQL 服务器。