Работая с курсорами в mysql-python, я использовал для вызова «BEGIN;», «COMMIT;» и «ROLLBACK;» явно следующим образом:
try:
cursor.execute("BEGIN;")
# some statements
cursor.execute("COMMIT;")
except:
cursor.execute("ROLLBACK;")
затем я обнаружил, что базовый объект соединения имеет соответствующие методы:
try:
cursor.connection.begin()
# some statements
cursor.connection.commit()
except:
cursor.connection.rollback()
Проверка DB-API PEP Я обнаружил, что в нем не упоминается метод begin () для объекта подключения, даже для расширений.
Mysql-python, кстати, выдает DeprecationWarning, когда вы используете метод. Например, sqlite3.connection не имеет метода вообще.
И вопрос в том, почему в PEP такого метода нет? Является ли оператор каким-то необязательным, достаточно ли вместо этого вызывать commit ()?