프로그래밍에 익숙하지 않고 Pylons 설명서에서 위키 만들기에 대한 예를 따르면서입니다. 위키에 연결하려는 데이터베이스는 Elixir로 작성되었으므로 위키 데이터베이스 스키마를 다시 작성하고 거기에서 계속했습니다.Elixir와 Pylons에서 다형성 상속으로 자체 관계를 만드는 방법은 무엇입니까?
위키에는 페이지 및 섹션에 상속되는 requirement for a Navigation table이 있습니다. 섹션에는 페이지가 여러 개있을 수 있지만 페이지에는 섹션이 하나만있을 수 있습니다. 또한 각 형제 노드는 서로 체인 참조 될 수 있습니다.
그래서 :
- 탐색은 "전에" "섹션"(OneToMany)와이 -
- 페이지 "섹션"(ManyToOne - 한 부분에서 많은 페이지)가 (OneToOne을 선행 노드를 참조) 및 :
- 섹션이 탐색에서 모든이 같은
코드 내가 쓴 모습을 상속 "전에"상속 36,936,897,352,053,210
오류가 이것을 수신 :
sqlalchemy.exc.OperationalError (OperationalError) 테이블 탐색은 탐색 (이름, 경로 aftr_id, ROW_TYPE) VALUES (내로 u'INSERT aftr_id라는 어떠한 열이 없다?? ?도하지
탐색에before = ManyToMany('Nav', inverse='before')
희망이 문제를 깰 수도 있지만 :) '
나는 또한 시도했습니다.
nav_table = schema.Table('nav', meta.metadata,
schema.Column('id', types.Integer(),
schema.Sequence('nav_id_seq', optional=True), primary_key=True),
schema.Column('name', types.Unicode(255), default=u'Untitled Node'),
schema.Column('path', types.Unicode(255), default=u''),
schema.Column('section', types.Integer(), schema.ForeignKey('nav.id')),
schema.Column('before', types.Integer(), default=None),
schema.Column('type', types.String(30), nullable=False)
)
page_table = schema.Table('page', meta.metadata,
schema.Column('id', types.Integer, schema.ForeignKey('nav.id'), primary_key=True),
schema.Column('content', types.Text(), nullable=False),
schema.Column('posted', types.DateTime(), default=now),
schema.Column('title', types.Unicode(255), default=u'Untitled Page'),
schema.Column('heading', types.Unicode(255)),
)
section_table = sa.Table('section', meta.metadata,
schema.Column('id', types.Integer,
schema.ForeignKey('nav.id'), primary_key=True),
)
orm.mapper(Nav, nav_table, polymorphic_on=nav_table.c.type, polymorphic_identity='nav')
orm.mapper(Section, section_table, inherits=Nav, polymorphic_identity='section')
orm.mapper(Page, page_table, inherits=Nav, polymorphic_identity='page', properties={
'comments':orm.relation(Comment, backref='page', cascade='all'),
'tags':orm.relation(Tag, secondary=pagetag_table)
})
어떤 도움이 많이 감사합니다 다음과 같이
이 선언에 대한 튜토리얼 원래 SQLAlchemy의 코드입니다.
"before"및 "after"구성 요소에 여전히 문제가있는 것 같습니다. 내가 Nav에서 한 것은 단순히 "섹션"과 "이전"에 대한 ManyToMany 관계를 만들고 페이지에서 "후"와 "섹션"을 스크랩했습니다.이 방법이 가장 효율적인 방법인지 확신 할 수 없습니다. 데이터베이스를 처리 할 때 다운 스트림 문제/작업을 만듭니다. 매번 ManyToMany 목록을 확인해야합니다.하지만 작동합니다. 더 효율적인 접근 방식이 무엇인지 확신 할 수 없습니까? – Turukawa