ใน postgres โดยปกติจะมีฐานข้อมูลสามฐานตามค่าเริ่มต้น หากคุณสามารถเชื่อมต่อในฐานะ superuser (เช่น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()