На postgres за замовчуванням зазвичай присутні три бази даних. Якщо ви зможете підключитися як супер-користувач (наприклад, postgres
роль), ви можете підключитися до баз даних postgres
або template1
. За замовчуванням pg_hba.conf дозволяє лише ролі Unix, призначеному postgres
для використання postgres
ролі, тому найпростішим є просто стати цим користувачем. У будь-якому випадку створіть двигун, як зазвичай, з користувачем, який має дозволи створити базу даних:
>>> engine = sqlalchemy.create_engine("postgres://postgres@/postgres")
engine.execute()
Однак ви не можете використовувати , оскільки postgres не дозволяє створювати бази даних всередині транзакцій, а sqlalchemy завжди намагається виконувати запити в транзакції. Щоб обійти це, отримайте базове з'єднання від двигуна:
>>> conn = engine.connect()
Але з'єднання все ще буде всередині транзакції, тому вам доведеться закінчити відкриту транзакцію за допомогою commit
:
>>> conn.execute("commit")
Потім можна перейти до створення бази даних, використовуючи для неї відповідну команду PostgreSQL.
>>> conn.execute("create database test")
>>> conn.close()