Class: QgsTransaction¶
Allows creation of a multi-layer database-side transaction.
This class allows including a set of layers in a database-side transaction, provided the layer data providers support transactions and are compatible with each other.
Only layers which are not in edit mode can be included in a transaction, and all layers need to be in read-only mode for a transaction to be committed or rolled back.
Layers can only be included in one transaction at a time.
When editing layers which are part of a transaction group, all changes
are sent directly to the data provider (bypassing the undo/redo stack),
and the changes can either be committed or rolled back on the database
side via the QgsTransaction
.commit and
QgsTransaction
.rollback methods.
As long as the transaction is active, the state of all layer features reflects the current state in the transaction.
Edits on features can get rejected if another conflicting transaction is active.
Note
This is an abstract class, with methods which must be implemented by a subclass.
The following methods must be implemented: executeSql()
Class Hierarchy¶
Base classes¶
Abstract Methods
Execute the sql string. |
Methods
Add the layer to the transaction. |
|
Begin transaction The statementTimeout (in seconds) specifies how long an sql statement is allowed to block QGIS before it is aborted. |
|
Commit transaction. |
|
Returns the connection string of the transaction |
|
creates a save point returns empty string on error returns the last created savepoint if it's not dirty |
|
dirty save point such that next call to createSavepoint will create a new one |
|
returns the last created savepoint |
|
Roll back transaction. |
|
returns savepoints |
Virtual Methods
In PyQGIS, only methods marked as virtual
can be safely overridden in a Python subclass of QgsTransaction. See the FAQ for more details.
rollback to save point, the save point is maintained and is "undertied" |
Static Methods
Create a transaction for the specified connection string connString and provider with providerKey. |
|
Checks if the provider of a given layer supports transactions. |
Signals
Emitted after a rollback |
|
Emitted after a rollback to savepoint |
|
Emitted if a sql query is executed and the underlying data is modified |
- class qgis.core.QgsTransaction[source]¶
Bases:
QObject
- addLayer(self, layer: QgsVectorLayer | None, addLayersInEditMode: bool = False) bool [source]¶
Add the
layer
to the transaction. The connection string must match.- Parameters:
layer (Optional[QgsVectorLayer]) – that will be added to the transaction
addLayersInEditMode (bool = False) – if set layers that are already
Added in version 3.26.
- Return type:
bool
- signal afterRollbackToSavepoint(savepointName: str)[source]¶
Emitted after a rollback to savepoint
Added in version 3.42.
- Parameters:
savepointName (str)
- begin(self, statementTimeout: int = 20)[source]¶
Begin transaction The
statementTimeout
(in seconds) specifies how long an sql statement is allowed to block QGIS before it is aborted. Statements can block, if multiple transactions are active and a statement would produce a conflicting state. In these cases, the statements block until the conflicting transaction is committed or rolled back. Some providers might not honour the statement timeout.- Parameters:
statementTimeout (int = 20) -> (bool)
- connectionString(self) str [source]¶
Returns the connection string of the transaction
Added in version 3.26.
- Return type:
str
- static create(connString: str | None, providerKey: str | None) QgsTransaction | None [source]¶
Create a transaction for the specified connection string
connString
and provider withproviderKey
.- Parameters:
connString (Optional[str])
providerKey (Optional[str])
- Return type:
Optional[QgsTransaction]
- static create(layers: Iterable[QgsVectorLayer]) QgsTransaction | None [source]
Create a transaction which includes the
layers
. All layers are expected to have the same connection string and data provider.- Parameters:
layers (Iterable[QgsVectorLayer])
- Return type:
Optional[QgsTransaction]
- createSavepoint(self)[source]¶
creates a save point returns empty string on error returns the last created savepoint if it’s not dirty
- createSavepoint(self, savePointId: str | None)[source]
creates a save point returns empty string on error
- Parameters:
savePointId (Optional[str]) -> (str)
- signal dirtied(sql: str, name: str)[source]¶
Emitted if a sql query is executed and the underlying data is modified
- Parameters:
sql (str)
name (str)
- dirtyLastSavePoint(self)[source]¶
dirty save point such that next call to createSavepoint will create a new one
- abstract executeSql(self, sql: str | None, isDirty: bool = False, name: str | None = '')[source]¶
Execute the
sql
string.- Parameters:
sql (Optional[str]) – The sql query to execute
isDirty (bool = False) – Flag to indicate if the underlying data will be modified
name (Optional[str] = '') -> (bool) – Name of the transaction ( only used if isDirty is
True
)
- Returns:
True
if everything is OK,False
otherwiseerror: The error message
- virtual rollbackToSavepoint(self, name: str | None)[source]¶
rollback to save point, the save point is maintained and is “undertied”
- Parameters:
name (Optional[str]) -> (bool)
- savePoints(self) List[str] ¶
returns savepoints
- Return type:
List[str]
- static supportsTransaction(layer: QgsVectorLayer | None) bool [source]¶
Checks if the provider of a given
layer
supports transactions.- Parameters:
layer (Optional[QgsVectorLayer])
- Return type:
bool