ฉันกำลังพยายามสร้างตารางภายในสคีมาโดยใช้ SQLAlchemy มีคอลัมน์ประเภท Enum ต่อไปนี้เป็นรหัส
import enum
import sqlalchemy
from sqlalchemy import Column, Text, Enum
from sqlalchemy.schema import CreateSchema
import sqlalchemy_utils
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class T(enum.Enum):
X = 1
Y = 2
ET = Enum(T, inherit_schema=True)
#ET = Enum(T, schema="schema1") # This works
class A(Base):
__tablename__ = 'a'
c1 = Column(Text, primary_key=True, nullable=False)
c2 = Column(Text, nullable=False)
c3 = Column(ET)
engine = sqlalchemy.create_engine("postgresql://postgres:[email protected]/mydb")
engine.execute(CreateSchema('schema1'))
schema_engine = engine.execution_options(schema_translate_map = { None: "schema1" } )
Base.metadata.create_all(schema_engine)
สิ่งนี้ล้มเหลวที่บรรทัด create_all โดยมีข้อผิดพลาดต่อไปนี้
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.DuplicateObject) มีประเภท t อยู่แล้ว [SQL: CREATE TYPE schema1.t AS ENUM ('X', 'Y')] (ความเป็นมาของข้อผิดพลาดนี้ที่: http://sqlalche.me/e/f405)
ฉันใช้รูปแบบนี้เนื่องจากฉันจะมีหลายสคีมาภายในซึ่งจะต้องสร้างตารางเดียวกัน