如何使用 PyODBC 通过 ODBC 连接使用 "CREATE DATABASE" 创建 PostgreSQL 数据库?



我正在尝试使用Python 3.7.5程序中的CREATE DATABASE语句创建一个PostgreSQL 12.1数据库(不是模式(,该程序连接到PostgreSQL 12.1实例作为用户通过UnixODBC并使用PyODBC模块,所有这些都运行在Ubuntu 19.10上。我的程序运行一个循环,该循环从 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上却没有。同样,我似乎在这里找不到任何与PostgreSQLCREATE DATABASE相关的答案。我可以使用createdb从 shell 命令行创建数据库。我尝试在 SQL DDL 脚本中设置自动提交,但这不起作用。

似乎最好从 Bash shell 发出createdb命令并完成它。然后,我可以从 ODBC 连接到新创建的数据库。冲洗并重复要创建和填充的每个数据库。

最新更新