Trên postgres, ba cơ sở dữ liệu thường hiển thị theo mặc định. Nếu bạn có thể kết nối với tư cách là người dùng siêu cấp (ví dụ: postgres
vai trò), thì bạn có thể kết nối với postgres
hoặc template1
cơ sở dữ liệu. Mặc định pg_hba.conf chỉ cho phép người dùng unix có tên postgres
sử dụng postgres
vai trò, vì vậy điều đơn giản nhất là chỉ cần trở thành người dùng đó. Ở bất kỳ mức độ nào, hãy tạo một công cụ như bình thường với người dùng có quyền tạo cơ sở dữ liệu:
>>> engine = sqlalchemy.create_engine("postgres://postgres@/postgres")
engine.execute()
Tuy nhiên, bạn không thể sử dụng vì postgres không cho phép bạn tạo cơ sở dữ liệu bên trong các giao dịch và sqlalchemy luôn cố gắng chạy các truy vấn trong một giao dịch. Để giải quyết vấn đề này, hãy lấy kết nối cơ bản từ động cơ:
>>> conn = engine.connect()
Nhưng kết nối sẽ vẫn ở bên trong một giao dịch, vì vậy bạn phải kết thúc giao dịch đang mở bằng commit
:
>>> conn.execute("commit")
Và sau đó bạn có thể tiến hành tạo cơ sở dữ liệu bằng lệnh PostgreSQL thích hợp cho nó.
>>> conn.execute("create database test")
>>> conn.close()