【问题标题】:What does autocommit mean in postgresql and psycopg2?自动提交在 postgresql 和 psycopg2 中是什么意思?
【发布时间】:2019-01-23 14:33:04
【问题描述】:

自动提交在 PostgreSQL 和 Psycopg2 中的含义相同吗?

来自 PostgreSQL 手册

默认情况下(没有 BEGIN ), PostgreSQL 以“autocommit”模式执行事务,即每条语句都以自己的方式执行 事务在语句末尾隐式执行提交(如果执行成功, 否则回滚)

是否意味着自动提交会为每个命令创建一个事务?

来自Psycopg2 driver's manual

可以在自动提交模式下设置连接:这个 所有执行的命令都将立即提交并且没有 回滚是可能的。一些命令(例如 CREATE DATABASE、VACUUM…) 要求在任何事务之外运行:为了能够运行 这些来自 Psycopg 的命令,连接必须处于自动提交状态 mode:可以使用 autocommit 属性。

and

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


    【解决方案1】:

    每个 PostgreSQL 语句都在一个事务中运行。

    PostgreSQL 本身只有知道自动提交模式,这意味着如果你不显式启动事务,每条语句都会在自己的事务中运行。

    VACUUM 之类的语句不能与其他语句在同一事务中运行。

    如果您没有在 psycopg2 中使用自动提交,则驱动程序必须通过在运行第一条语句时显式启动事务来模拟非自动提交模式。

    【讨论】:

    • 谢谢。 (1) 你能猜出 Psycopg2 中的自动提交是什么意思吗?这是否意味着以下命令不在任何事务中运行,因为“一些命令(例如 CREATE DATABASE、VACUUM ......)需要在任何事务之外运行:为了能够从 Psycopg 运行这些命令,连接必须处于自动提交模式:您可以使用 autocommit 属性”、“执行命令时不启动事务并且不需要 commit() 或 rollback()”和“某些 PostgreSQL 命令,例如 CREATE DATABASE 或 VACUUM 可以” t 遇到事务:要运行这样的命令,启用自动提交模式”?
    • (2) 在 postgreSQL 中,drop database 是否也在事务中运行,无论如何?为什么stackoverflow.com/questions/51869619/…
    • (3) 在postgreSQL中,当你说“每个PostgreSQL语句都在一个事务中运行”时,它是否只适用于自动提交?如果禁用了自动提交,是否仍然是“每个 PostgreSQL 语句都在事务中运行”?
    • 我试图扩展答案以使其更清晰。如果你没有在 psycopg2 中设置自动提交模式,你运行VACUUM 和朋友可能会出错。 DROP DATABASE 也是这些命令之一。请注意,这些命令仍然在事务中运行:如果它们失败,它们将无效。
    • 谢谢。 postgresql 手册说“CREATE DATABASE 不能在事务块内执行。”事务块是指仅显式创建的块吗?创建数据库是否还必须在自己的事务中执行?
    猜你喜欢
    • 1970-01-01
    • 2017-02-05
    • 2012-10-28
    • 2016-06-12
    • 2019-12-10
    • 2014-10-09
    • 2018-03-20
    相关资源
    最近更新 更多