En postgres, tres bases de datos están normalmente presentes por defecto. Si puede conectarse como superusuario (por ejemplo, la función postgres
), puede conectarse a las bases de datos postgres
o template1
. El valor predeterminado pg_hba.conf permite que solo el usuario de Unix llamado postgres
use el rol postgres
, por lo que lo más simple es convertirse en ese usuario. En cualquier caso, crear un motor como de costumbre con un usuario que tenga los permisos para crear una base de datos:
>>> engine = sqlalchemy.create_engine("postgres://[email protected]/postgres")
No puede utilizar engine.execute()
sin embargo, debido a Postgres no le permiten crear bases de datos dentro de las transacciones, y sqlalchemy siempre trata para ejecutar consultas en una transacción. Para evitar esto, conseguir la conexión subyacente del motor:
>>> conn = engine.connect()
Pero la conexión todavía estará dentro de una transacción, así que hay que poner fin a la transacción abierta con un commit
:
>>> conn.execute("commit")
Y a continuación, puede proceder a crear la base de datos utilizando el comando PostgreSQL adecuado para ello.
>>> conn.execute("create database test")
>>> conn.close()
¿Crear una nueva base de datos o simplemente tablas? No he encontrado muchos ORM que realmente crean bases de datos. –
Encontré [this] (http://www.mail-archive.com/[email protected]/msg05520.html) –
Útil: http://sqlalchemy-utils.readthedocs.org/en/latest/database_helpers .html –