【问题标题】:Parameterize pyodbc connect string using keyword arguments from my qodbc API?使用来自我的 qodbc API 的关键字参数参数化 pyodbc 连接字符串?
【发布时间】:2020-05-14 20:19:18
【问题描述】:

帮助我了解是否可以将我的连接字符串参数化为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 帖子(herehere)指向这个 code.google documentation,建议我可以将 字符串、关键字或两者结合使用与 pyodbc 的 connect 函数。

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

我在pyodbc documentation 中搜索qodbc 关键字没有返回任何结果。我必须断定 f-strings 是我唯一的选择吗?

【问题讨论】:

    标签: python pyodbc qodbc


    【解决方案1】:

    我必须断定 f-strings 是我唯一的选择吗?

    一点也不。

    pyodbc 是为处理any ODBC 驱动程序而构建的,因此它不会识别哪些关键字是“合法的”,哪些是不合法的。正如here 解释的那样,有一些关键字是由 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。

    【讨论】:

    • 嗯。在遇到这个参数之前,我天真地朝那个方向前进:OLE DB Services
    • 嗯,是的,这是一个“并发症”。 ☺️ 我经常使用 SQL Server ODBC,而且我从来不需要使用那个连接字符串参数。你用它来做什么?每次都需要给它传递不同的值吗?
    • 好的。所以看起来我可能需要尝试字符串+关键字;并回答您的问题,OP 中的详细信息,但每个连接都指向不同的 QuickBooks 公司文件,我需要从中获取每周报告。
    • 当然可以,但是您是否需要使用OLE DB Services 值而不是-2
    • 感谢您的耐心帮助我了解如何解决这个问题,pyodbc.connect('OpenMode=F;OLE DB Services=-2;', [kwargs])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多