Запуск транзакционного блока SQL (t-sql) в python с использованием pyodbc - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть следующий набор операторов T-SQL. Где курсор загружен с около 500 идентификаторов. И для каждого идентификатора выполняются настроенные операторы обновления.

    declare @id int
    declare @ids cursor

    set @ids=cursor fast_forward read_only for
    select id from table_id;

    open @ids
    fetch next from @ids into @id
    while @@FETCH_STATUS=0
    begin
        update table2 set qty2=0 where id=@id;
        update table3 set qty3=0 where id=@id;
        fetch next from @ids into @id
    end

    close @ids
    deallocate @ids

Когда я запускаю это, используя pyodbc в python, устанавливая autocommit = True, операторы обновления выполняются только для нескольких идентификаторов, но не для каждогоЯ БЫ. Почему такое поведение?

Здесь используется оператор python.

tsqlString = "declare @id int ... deallocate @ids"
con = pyodbc.connect(connection_string, autocommit=True))
cursor = con.cursor()
cursor.execute(tsqlString)

cursor.close()
con.close()
...