Как мне создать базу данных PostgreSQL, используя "CREATE DATABASE" через соединение ODB C, используя PyODB C? - PullRequest
1 голос
/ 14 февраля 2020

Я пытаюсь создать базу данных PostgreSQL 12.1 (не схему), используя оператор CREATE DATABASE из программы Python 3.7.5, подключающейся к экземпляру PostgreSQL 12.1 в качестве пользователя postgres через UnixODB C и используя модуль PyODB C, все работают на Ubuntu 19.10. Моя программа запускает al oop, который читает строки из сценария SQL DDL, разделяя операторы SQL на точку с запятой. В нем регистрируются следующие ошибки:

16:15:20 ERROR    Error executing statement 'CREATE DATABASE "TestV1" WITH OWNER = postgres': ('25001', '[25001] ERROR: CREATE DATABASE cannot run inside a transaction block;\nError while executing the query (1) (SQLExecDirectW)')
16:15:20 CRITICAL Unable to create objects: ('25001', '[25001] ERROR: CREATE DATABASE cannot run inside a transaction block;\nError while executing the query (1) (SQLExecDirectW)')

Мой SQL DDL-скрипт начинается со следующей строки: CREATE DATABASE "TestV1" WITH OWNER = postgres;

Я добился успеха с CREATE SCHEMA в том же контексте, но не с CREATE DATABASE. Кроме того, я не могу найти здесь никаких ответов, касающихся конкретно CREATE DATABASE на PostgreSQL. Я могу создать базу данных из командной строки оболочки, используя createdb. Я попытался установить AUTOCOMMIT в сценарии SQL DDL, но это не работает.

1 Ответ

1 голос
/ 15 февраля 2020

Кажется, лучше всего выполнить команду createdb из оболочки Bash и покончить с этим. Затем я могу подключиться к вновь созданной базе данных из ODB C. Промойте и повторите для каждой базы данных, которая будет создана и заполнена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...