psycopg2데이터베이스 API를 사용하여 PostgreSQL 9.3에서 작업하고 있습니다.
DB API를 최소 격리 수준 ( "자동 커밋"모드)으로 설정했으며 SQL을 통해 직접 자체 트랜잭션을 관리하고 있습니다. 예:
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;")
기본적으로 시작된 트랜잭션은 cur.execute("BEGIN;")해당 커서로만 제한 self.conn.cursor()됩니까 , 아니면 전체 연결 ( )에 해당합니까?
내가하고있는 더 복잡한 작업 중 일부는 논리적으로 기능으로 분류되는 여러 개의 개별 데이터베이스 작업과 관련이 있습니다. 이것은 모두 멤버로 연결된 클래스에 있기 때문에 각 함수 내에서 커서를 만드는 것이 훨씬 편리합니다. 그러나 트랜잭션 내 에서 커서를 만드는 방법이 확실하지 않습니다 .
기본적으로 트랜잭션이 연결별로 이루어지는 경우 트랜잭션 내에서 즉시 많은 커서를 만들 수 있습니다. 그들이 커서 당이라면, 나는 커서를 모든 곳에서 통과시켜야한다는 것을 의미합니다. 무엇 이니?
당신이 호출 할 수 있다는 사실은 비록 문서는, 이것에 접촉하지 않는 connection.commit()나를 만드는 공정 거래 제어가 당 연결입니다 확신합니다.