postgresでは、通常、デフォルトで3つのデータベースが存在します。スーパーユーザー(postgres
ロールなど)として接続できる場合は、postgres
またはtemplate1
データベースに接続できます。デフォルトのpg_hba.confはpostgres
、postgres
ロールを使用するように指定されたUNIXユーザーのみを許可するため、最も単純なことは、そのユーザーになることだけです。とにかく、データベースを作成する権限を持つユーザーで通常どおりエンジンを作成します。
>>> 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()