Ben psycopg2veritabanı API kullanarak PostgreSQL 9.3 ile bazı işler yapıyorum .
Minimum izolasyon düzeyinde ("otomatik taahhüt" modu) ayarlanmış DB API var ve kendi SQL ile doğrudan kendi işlemleri yönetiyorum. Misal:
cur = self.conn.cursor()
cur.execute("BEGIN;")
cur.execute("SELECT dbId, downloadPath, fileName, tags FROM {tableName} WHERE dlState=%s".format(tableName=self.tableName), (2, ))
ret = cur.fetchall()
cur.execute("COMMIT;")
Temel olarak, cur.execute("BEGIN;")sınırlı bir şekilde başlatılan işlem sadece imleçle mi, yoksa tüm bağlantı için self.conn.cursor()mi ( )?
Yaptığım bazı daha karmaşık şeyler, mantıksal olarak işlevlere ayrılan birden fazla ayrı veritabanı işlemi içeriyor. Bunların hepsi üye olarak bağlantıya sahip bir sınıfta olduğundan, her işlev içinde imleçler oluşturmak çok daha uygundur. Ancak, bir işlem içinde imleç oluşturmanın nasıl çalıştığından emin değilim .
Temel olarak, işlemler bağlantı başına ise, işlem içinde anında çok sayıda imleç oluşturabilirim. Eğer imleç başına iseler, imleci her yere iletmem gerektiği anlamına gelir. Hangisi?
Belgeleme buna değinmese de, arayabileceğiniz gerçeği , işlem kontrolünün bağlantı başına olduğundan oldukça emin connection.commit()olmamı sağlıyor .