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)