2

帮助我了解是否可以参数化我的连接字符串以pyodbc连接到 QuickBooks 的此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 帖子(此处此处)指向此code.google 文档,建议我可以在 pyodbc 的函数中使用字符串、关键字或两者兼而有之。connect

pyodbc 与许多不同的 odbc API 一起工作,那么如何确定是否有任何pyodbc 关键字将映射到我所需的 qodbc 关键字?

我在pyodbc 文档中搜索qodbc关键字没有返回任何结果。我必须得出结论,f-strings 是我唯一的选择吗?

4

1 回答 1

2

我必须得出结论,f-strings 是我唯一的选择吗?

一点也不。

pyodbc 是为处理任何ODBC 驱动程序而构建的,因此它不会识别哪些关键字是“合法的”,哪些是不合法的。正如这里所解释的,有一些由 DBAPI 规范指定的关键字,还有一些保留给 pyodbc 内部使用的关键字,它们“没有传递给 odbc 驱动程序”,这意味着其他关键字传递给 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 Server 的。

于 2020-05-14T22:14:09.227 回答