В postgres по умолчанию обычно присутствуют три базы данных. Если вы можете подключиться как суперпользователь (например, роль postgres
), вы можете подключиться к базам данных postgres
или template1
. По умолчанию pg_hba.conf разрешает только пользователю unix с именем postgres
использовать роль postgres
, поэтому проще всего просто стать этим пользователем. Во всяком случае, создать двигатель, как обычно, с пользователем, который имеет право доступа для создания базы данных:
>>> engine = sqlalchemy.create_engine("postgres://[email protected]/postgres")
Вы не можете использовать engine.execute()
однако, поскольку Postgres не позволяет создавать базы данных внутри транзакций и SQLAlchemy всегда пытается для запуска запросов в транзакции. Чтобы обойти эту проблему, получите основную связь от двигателя:
>>> conn = engine.connect()
Но связь все равно будет внутри транзакции, поэтому вы должны закончить открытую сделку с commit
:
>>> conn.execute("commit")
И вы можете приступить к созданию базы данных, используя для этого правильную команду PostgreSQL.
>>> conn.execute("create database test")
>>> conn.close()
Создать новую базу данных или просто таблицы? Я не сталкивался с множеством ORM, которые фактически создают базы данных. –
Я нашел [это] (http://www.mail-archive.com/[email protected]/msg05520.html) –
Полезно: http://sqlalchemy-utils.readthedocs.org/en/latest/database_helpers .html –