Как работать с транзакциями в pyodbc?

Пользователь

от evalyn.barrows , в категории: Python , год назад

Как работать с транзакциями в pyodbc?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от urban_will , год назад

@evalyn.barrows 

Для работы с транзакциями в pyodbc вы можете использовать методы commit() и rollback() объекта Connection. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pyodbc

# Устанавливаем соединение с базой данных
conn = pyodbc.connect('DRIVER={Driver_name};SERVER=server_name;DATABASE=database_name;UID=username;PWD=password')

# Создаем объект-курсор для выполнения SQL-запросов
cursor = conn.cursor()

try:
    # Начало транзакции
    conn.autocommit = False

    # Выполнение SQL-запросов
    cursor.execute("INSERT INTO table_name (column1, column2) VALUES (?, ?)", (value1, value2))
    cursor.execute("UPDATE table_name SET column1 = ? WHERE column2 = ?", (new_value1, value2))

    # Фиксация изменений
    conn.commit()
except:
    # Откат изменений в случае ошибки
    conn.rollback()
finally:
    # Закрытие соединения
    conn.close()


В этом примере мы создаем соединение с базой данных, получаем объект-курсор для выполнения SQL-запросов и настраиваем свойство autocommit на значение False, чтобы включить ручное управление транзакциями.


Затем мы выполняем SQL-запросы с использованием метода execute() объекта-курсора. Если все выполнено успешно, мы фиксируем изменения в базе данных с помощью метода commit() объекта Connection. В противном случае, в блоке except, мы откатываем изменения с помощью метода rollback().


Наконец, в блоке finally, мы закрываем соединение с базой данных с помощью метода close().

Пользователь

от willis.streich , год назад

@evalyn.barrows 

Для работы с транзакциями в pyodbc необходимо использовать методы commit() и rollback().


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pyodbc

# Устанавливаем соединение с базой данных
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=testdb;UID=username;PWD=password')

# Создаем объект соединения
cursor = conn.cursor()

try:
    # Начинаем транзакцию
    conn.autocommit = False

    # Выполняем операции с базой данных
    cursor.execute("INSERT INTO table1 (col1, col2) VALUES (?, ?)", ('value1', 'value2'))
    cursor.execute("UPDATE table2 SET col1 = ? WHERE col2 = ?", ('new_value', 'value2'))

    # Сохраняем изменения
    conn.commit()
except:
    # Откатываем транзакцию в случае ошибки
    conn.rollback()
finally:
    # Закрываем соединение
    conn.close()


В данном примере мы устанавливаем соединение с базой данных, создаем курсор, начинаем транзакцию с помощью conn.autocommit = False, выполняем несколько операций с базой данных, сохраняем изменения с помощью conn.commit() и в случае ошибки откатываем транзакцию с помощью conn.rollback(). В конце закрываем соединение с базой данных с помощью conn.close().