【问题标题】:Reading SSMS output message using pyodbc使用 pyodbc 读取 SSMS 输出消息
【发布时间】:2016-11-11 09:21:37
【问题描述】:

我有一个 MS SQL CREATE 脚本列表,我正在尝试自动执行每个脚本的执行过程。由于此 CREATE 脚本不会产生任何记录,我希望我的自动化脚本返回如下所示的 SSMS 输出消息: '命令执行成功'

我可以使用 pyodbc 读取此输出消息吗? 这是我用来执行脚本的示例代码:

    conn = pyodbc.connect(r'DRIVER={SQL Server};SERVER=%s;Trusted_Connection=True;'% (db_conn_string))
    cursor = conn.cursor()
    cursor.execute(query)

【问题讨论】:

    标签: python sql-server pyodbc


    【解决方案1】:

    实际上没有必要捕获“命令执行成功”消息,因为如果命令成功执行,则会发生异常。

    因此,您的 Python 代码只需 .execute 语句,捕获发生的任何异常,并相应地继续,例如,

    try:
        crsr.execute("DROP TABLE dbo.nonexistent")
        print("INFO: DROP TABLE succeeded.")
    except pyodbc.ProgrammingError as err:
        error_code = err.args[0]
        if error_code == "42S02":  # [table] does not exist or you do not have permission
            print("INFO: DROP TABLE did not succeed.")
        else:
            raise  # re-raise unexpected exception
    

    【讨论】:

    • 这很有帮助...如果 pyodbc 无法捕获控制台消息,是否有任何可用的软件包?
    • @.Naran - 我认为 IronPython 可能能够通过 .NET SqlClient 程序集来做到这一点,也许使用here 描述的技术。
    【解决方案2】:
    cursor.rowcount
    

    将以上行添加到您的代码将返回最后执行的查询的行数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多