Add documentation on transactions

This commit is contained in:
Victor Kashirin 2014-06-11 15:12:44 +04:00
parent 38b1114bde
commit c78d5e00b2

View File

@ -64,6 +64,36 @@ The list of filter columns given as the second argument filter using the
values in the first column. If you don't want to update over a
particular value, just use the auto-generated ``id`` column.
Using Transactions
------------------
You can group a set of database updates within a transaction, thus all updates are
committed at once or, in case of exception, all of them are reverted. Transactions are
supported by ``dataset`` context manager, and initiated by ``with`` statement::
with dataset.connect() as tx:
tx['user'].insert(dict(name='John Doe', age=46, country='China'))
You can get same functionality with datase methods :py:meth:`all() <dataset.Table.begin>`,
:py:meth:`all() <dataset.Table.commit>` and :py:meth:`rollback() <dataset.Table.rollback>`::
db = dataset.connect()
db.begin()
try:
db['user'].insert(dict(name='John Doe', age=46, country='China'))
db.commit()
except:
db.rollback()
Nested transactions are supported too::
db = dataset.connect()
with db as tx1:
tx1['user'].insert(dict(name='John Doe', age=46, country='China'))
with db sa tx2:
tx2['user'].insert(dict(name='Jane Doe', age=37, country='France', gender='female'))
Inspecting databases and tables
-------------------------------