首页 > 解决方案 > PyODBC 错误:无结果。以前的 SQL 不是使用“SET NOCOUNT ON”的查询

问题描述

我知道以前有人问过这个问题,我已经在这里查找过了。我在 SQL 查询中使用了 SET NOCOUNT ON 仍然给我错误,决定在这里发布我的代码,以便可以很好地审查它。谁能帮我这个?

    @property
    def sqlquery(self):
        retry_flag = True
        retry_count = 0
        conn = pyodbc.connect("Driver={SQL Server};"
                              "Server=server1;"
                              "Database=db1;"
                              "Trusted_Connection=yes;")
        cursor = conn.cursor()
        while retry_flag and retry_count < 10:
            try:
                cursor.execute('''
        SET NOCOUNT ON;
        SELECT * FROM xx.y
        WHERE y = '%s'
        AND a = '%s'
        AND b = '%s'
        AND c = '%s'
        AND d = '%s' ''' % (1stplaceholder, 2nd, 3rd, 4th, 5th))
                retry_flag = False
            except:
                print("Retry after 1 sec")
                retry_count = retry_count + 1
                time.sleep(1)
        for row in cursor:
            if cursor is None:
                return False
            else:
                return row[19]
        conn.close()

我也提到了这个问题,因为我收到了 Error pyodbc.Error: ('01000', '[01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()). (10054) (SQLExecDirectW) ')

我的脚本中有 3 个与此类似的 sql 查询,在运行近 10k 次迭代后,它给了我一个错误pyodbc.ProgrammingError: No results。以前的 SQL 不是查询。因此,SQL 查询非常好,与数据库的连接也是如此。

标签: pythonsqlsql-serverpython-3.xpyodbc

解决方案


推荐阅读