Why the need to commit explicitly when doing an UPDATE?
The DB-API spec requires that connecting to the database begins a new transaction, by default. You must commit
to confirm any changes you make, or rollback
to discard them.
Note that if the database supports an auto-commit feature, this must be initially off.
Pure SELECT
statements, since they never make any changes to the database, don't have to have their changes committed.
Others have explained why a commit is not necessary on a SELECT statement. I just wanted to point out you could utilize the autocommit
property of the Connection object to avoid having to manually execute commit yourself:
import cx_Oraclewith cx_Oracle.connect(usr, pwd, url) as conn: conn.autocommit = True cursor = conn.cursor() cursor.execute("UPDATE SO SET STATUS='PE' WHERE ID='100'") cursor.close()
This is especially useful when you have multiple INSERT, UPDATE, and DELETE statements within the same connection.