Благодарю. В руководстве postgresql сказано: «CREATE DATABASE не может быть выполнена внутри блока транзакции». Под блоком транзакции подразумеваются только те, которые созданы явно? Нужно ли создавать базу данных в собственной транзакции?

ает ли autocommit то же самое в PostgreSQL и Psycopg2?

Из руководства PostgreSQL

По умолчанию (без BEGIN) PostgreSQL выполняет транзакции в режиме «автоматической фиксации», то естькаждый оператор выполняется в своей собственной транзакции а такжепринятие неявно выполняется в конце оператора (если выполнение было успешным, в противном случае выполняется откат).

Значит ли это, что autocommit создаст транзакцию для каждой команды?

ИзРуководство для водителя Psycopg2

Возможно установить соединение в режиме автоматической фиксации: таквсе выполненные команды будут немедленно переданы и откат невозможен. Несколько команд (например, CREATE DATABASE, VACUUM ...) должны выполняться вне любой транзакции: чтобы иметь возможность запускать эти команды из Psycopg, соединение должно быть в режиме автоматической фиксации: вы можете использовать свойство autocommit.

а также

psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT

Когда команды выполняются, транзакция не запускается, а commit () или rollback () не требуются. Некоторые команды PostgreSQL, такие как CREATE DATABASE или VACUUM, не могут выполнить транзакцию: для запуска такой команды используйте:

>>> conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)

Означает ли то, что «все выполненные команды будут немедленно зафиксированы», означает, что автокоммит в Psycopg2 создает транзакцию для каждой команды?

Означает ли, что «транзакция не запускается, когда команды выполняются, а фиксация () или откат () не требуются» означает, что автокоммит в Psycopg2 предотвратит транзакцию, созданную для каждой команды?

Означает ли то, что «некоторые команды PostgreSQL, такие как CREATE DATABASE или VACUUM, не могут быть запущены в транзакции: для запуска такой команды включите режим автоматической фиксации» означает, что автоматическая фиксация в Psycopg2 предотвратит транзакцию, созданную только для некоторых команд (CREATE DATABASE или VACUUM)?

Благодарю.