pypyodbc不提交

时间:2018-09-24 12:58:18

标签: python sql sql-server pypyodbc

我有一个SQLServer TSQL查询,其中包含多个INSERT语句,范围从非常基本到有些复杂。

此查询在SQLServer Management Studio中有效。

当我使用Python pypyodbc包并运行脚本时,脚本会运行但不会提交。我尝试了有无commit()函数。

BUT (如果我在末尾指定SELECT语句),脚本将提交插入。

所以这很好,因为它可以工作,但是我在所有脚本的末尾都添加了一个不适用的SELECT语句。

有没有人知道如何在不使用SELECT语句的情况下提交这些内容?我不想将查询拆分为多个查询。

谢谢!

    def execute_query(self,
                  query,
                  tuple_of_query_parameters,
                  commit=False,
                  return_insert_id=False,
                  return_results=True):
    self.open_cursor()

    try:
        self.connection_cursor.execute(query,
                                       tuple_of_query_parameters)

        result_set = None
        if return_results:
            if return_insert_id:
                result_set = self.connection_cursor.fetchone()[0]
            else:
                result_set = self.connection_cursor.fetchall()

            if commit:
                self.connection_cursor.commit()

    except pypyodbc.Error as e:
        print('Check for "USE" in script!!!')
        raise
    finally:
        self.close_cursor()

    return result_set

1 个答案:

答案 0 :(得分:2)

尝试一下:

self.connection_cursor.execute(query,
                                   tuple_of_query_parameters)
if commit:
    self.connection_cursor.commit() #put commit here, immediately after execute

认为可以解决问题。