una datos conectar con como abrir python postgresql psycopg2

python - datos - psycopg2 windows



Crear una base de datos Postgres usando python (2)

Quiero crear la base de datos Postgres usando Python.

con = psql.connect(dbname=''postgres'', user=self.user_name, host='''', password=self.password) cur = con.cursor() cur.execute("CREATE DATABASE %s ;" % self.db_name)

Estoy teniendo el siguiente error:

InternalError: CREATE DATABASE cannot run inside a transaction block

Estoy usando psycopg2 para conectar. No entiendo cuál es el problema. Lo que estoy tratando de hacer es conectarme a la base de datos (Postgres):

psql -postgres -U UserName

Y luego crear otra base de datos:

create database test;

Esto es lo que normalmente hago y quiero automatizar esto creando el script Python.


Como se muestra en la otra respuesta, la conexión debe estar en modo de confirmación automática. Otra forma de configurarlo usando psycopg2 es a través del atributo autocommit :

import psycopg2 con = psycopg2.connect(...) con.autocommit = True cur = con.cursor() cur.execute(''CREATE DATABASE {};''.format(self.db_name))


Use ISOLATION_LEVEL_AUTOCOMMIT , una extensión de psycopg2:

No se inicia ninguna transacción cuando se emiten los comandos y no se requiere commit () o rollback ().

import psycopg2 from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT # <-- ADD THIS LINE con = psycopg2.connect(dbname=''postgres'', user=self.user_name, host='''', password=self.password) con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # <-- ADD THIS LINE cur = con.cursor() cur.execute("CREATE DATABASE %s ;" % self.db_name)