我正在使用psycopg2
数据库API 对PostgreSQL 9.3进行一些工作。
我将数据库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()
使我相当有信心事务控制是针对每个连接的。