Database-writing operations are executed in the context of a database transaction. Usually, we don't have to worry about this as the server takes care of that while running model methods.
But, in some cases, we may need finer control over the transaction. This can be done through the self.env.cr
database cursor, as shown here:
self.env.cr.commit()
commits the transaction's bufferedwrite
operations.self.env.cr.rollback()
cancels the transaction'swrite
operations since the last commit or all if no commit was done.
Note
In a shell session, your data manipulation won't be made effective in the database until you use self.env.cr.commit()
.
With the cursor execute()
method, we can run SQL directly in the database. It takes a string with the SQL statement to run and a second optional argument with a tuple or list of values to use as parameters for the SQL. These values will be used where the %s
placeholders are found.