Вот мой код:
import cx_Oracle
conn = cx_Oracle.connect(usr, pwd, url)
cursor = conn.cursor()
cursor.execute("UPDATE SO SET STATUS='PE' WHERE ID='100'")
conn.commit()
Если я удаляю conn.commit()
, таблица не обновляется. Но для избранных операторов, мне не нужно это conn.commit()
. Мне любопытно почему?
Спецификация DB-API требует, чтобы подключение к базе данных по умолчанию начало новой транзакции. Вы должны commit
, чтобы подтвердить любые внесенные изменения, или откат
, чтобы отменить их.
Обратите внимание, что если база данных поддерживает функцию автоматической фиксации, она должна быть изначально отключена.
Операторы Pure SELECT
, поскольку они никогда не вносят никаких изменений в базу данных, не должны быть зафиксированы.
commit используется для указания базе данных сохранить все изменения в текущей транзакции.
Select не изменяет никаких данных, поэтому нечего сохранять и, следовательно, нечего фиксировать
См. википедию для транзакций