No se debe a la implementación del controlador, es el mismo PostgreSQL. Es lo mismo con cualquier otro idioma o controlador.
Un cliente necesita estar conectado a una base de datos para poder hacer cualquier cosa, incluido CREATE DATABASE
. Además del postgres
base de datos, template1
se usa a menudo para este propósito también.
Entonces, dado que debe conectarse a la base de datos recién creada para crear objetos dentro de ella, no hay forma de evitar abrir otra conexión.
En resumen, lo que estás haciendo no se puede simplificar, ya es óptimo.