sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan laver jeg databasetransaktioner med psycopg2/python db api?

Brug db.set_isolation_level(n) , forudsat db er dit forbindelsesobjekt. Som Federico skrev her, betydningen af ​​n er:

0 -> autocommit
1 -> read committed
2 -> serialized (but not officially supported by pg)
3 -> serialized

Som dokumenteret her, psycopg2.extensions giver dig symbolske konstanter til formålet:

Setting transaction isolation levels
====================================

psycopg2 connection objects hold informations about the PostgreSQL `transaction
isolation level`_.  The current transaction level can be read from the
`.isolation_level` attribute.  The default isolation level is ``READ
COMMITTED``.  A different isolation level con be set through the
`.set_isolation_level()` method.  The level can be set to one of the following
constants, defined in `psycopg2.extensions`:

`ISOLATION_LEVEL_AUTOCOMMIT`
    No transaction is started when command are issued and no
    `.commit()`/`.rollback()` is required.  Some PostgreSQL command such as
    ``CREATE DATABASE`` can't run into a transaction: to run such command use
    `.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)`.

`ISOLATION_LEVEL_READ_COMMITTED`
    This is the default value.  A new transaction is started at the first
    `.execute()` command on a cursor and at each new `.execute()` after a
    `.commit()` or a `.rollback()`.  The transaction runs in the PostgreSQL
    ``READ COMMITTED`` isolation level.

`ISOLATION_LEVEL_SERIALIZABLE`
    Transactions are run at a ``SERIALIZABLE`` isolation level.


.. _transaction isolation level: 
   http://www.postgresql.org/docs/8.1/static/transaction-iso.html


  1. DBA - Sådan dræber du alle databaseprocesser på SQL Server

  2. Opret forbindelse til SQL Server via PDO ved hjælp af SQL Server Driver

  3. SÆKKER LIKE vs iLIKE

  4. Trigger for at forhindre indsættelse for duplikerede data af to kolonner