Python asyncpg-连接到服务器并创建数据库(如果不存在)

Python asyncpg-连接到服务器并创建数据库(如果不存在),python,sql,database,postgresql,asyncpg,Python,Sql,Database,Postgresql,Asyncpg,有没有一种方法可以像在Hibernate中一样使用asyncpg在PostgreSQL server中创建数据库,方法是: jdbc:mysql://localhost:3306/db_name?createDatabaseIfNotExist=true uri中的标志。有没有一种方法可以在不连接数据库的情况下连接到服务器并执行sql语句?在asyncpg中没有这种方法的快捷方式,但很容易在代码中实现。每个PostgreSQL集群都有一个template1数据库,如果您连接的原始数据库不存在,

有没有一种方法可以像在Hibernate中一样使用asyncpg在PostgreSQL server中创建数据库,方法是:

jdbc:mysql://localhost:3306/db_name?createDatabaseIfNotExist=true

uri中的标志。有没有一种方法可以在不连接数据库的情况下连接到服务器并执行sql语句?

在asyncpg中没有这种方法的快捷方式,但很容易在代码中实现。每个PostgreSQL集群都有一个
template1
数据库,如果您连接的原始数据库不存在,可以使用该数据库发出
CREATE database
语句
CREATE DATABASE
通常需要特殊权限,因此连接到
template1
(通常是
postgres
)时需要使用超级用户帐户

例如:

导入异步IO
导入异步PG
异步def connect_create_(如果不存在)(用户、数据库):
尝试:
conn=等待异步PG.connect(用户=用户,数据库=数据库)
除asyncpg.InvalidCatalogNameError外:
#数据库不存在,请创建它。
sys_conn=等待异步PG.connect(
数据库='template1',
user='postgres'
)
等待系统连接执行(
f'CREATE DATABASE“{DATABASE}”所有者“{user}”
)
等待系统连接关闭()
#连接到新创建的数据库。
conn=等待异步PG.connect(用户=用户,数据库=数据库)
返回控制
asyncio.get_event_loop()。运行_直到完成(
如果不存在,则连接创建(用户='elvis',数据库='new-database')
)

谢谢,使用了相同的解决方案,但没有'asyncio.get\u event\u loop()。运行\u直到完成(如果不存在(user='elvis',database='new-database')部分,则连接\u create\u)