【发布时间】:2019-01-23 14:33:04
【问题描述】:
自动提交在 PostgreSQL 和 Psycopg2 中的含义相同吗?
来自 PostgreSQL 手册
默认情况下(没有 BEGIN ), PostgreSQL 以“autocommit”模式执行事务,即每条语句都以自己的方式执行 事务和在语句末尾隐式执行提交(如果执行成功, 否则回滚)。
是否意味着自动提交会为每个命令创建一个事务?
可以在自动提交模式下设置连接:这个 所有执行的命令都将立即提交并且没有 回滚是可能的。一些命令(例如 CREATE DATABASE、VACUUM…) 要求在任何事务之外运行:为了能够运行 这些来自 Psycopg 的命令,连接必须处于自动提交状态 mode:可以使用 autocommit 属性。
psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT执行命令且没有 commit() 时不启动事务 或 rollback() 是必需的。 一些 PostgreSQL 命令,例如 CREATE DATABASE 或 VACUUM 不能运行到事务中:运行这样的 命令使用:
>>> conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
“所有执行的命令都将立即提交”是否意味着 Psycopg2 中的自动提交会为每个命令创建一个事务?
“执行命令时不启动事务并且不需要 commit() 或 rollback()”是否意味着 Psycopg2 中的自动提交会阻止为每个命令创建事务?
“某些 PostgreSQL 命令,例如 CREATE DATABASE 或 VACUUM 无法运行到事务中:要运行此类命令,请启用自动提交模式”是否意味着 Psycopg2 中的自动提交将阻止仅为某些命令(CREATE DATABASE 或 VACUUM)创建事务)?
谢谢。
【问题讨论】:
标签: postgresql psycopg2