sql >> データベース >  >> RDS >> PostgreSQL

psycopg2 / python db apiを使用してデータベーストランザクションを実行するにはどうすればよいですか?

    db.set_isolation_level(n)を使用します 、dbを想定 接続オブジェクトです。フェデリコがここに書いたように、nの意味 は:

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

    ここに記載されているように、psycopg2.extensions 目的のためにシンボリック定数を提供します:

    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. UNIX_TIMESTAMP()の例– MySQL

    2. Oracle ForUserSecurityでのプロファイルの作成

    3. 可変サイズの変数リストを使用したMySQLプリペアドステートメント

    4. SQL Serverでデータアクセスを有効/無効にする方法(T-SQLの例)