기존 데이터베이스에서 Python/Elixir 인터페이스를 이미 마쳤습니다. 저는 이제 Elixir를 삭제하고 모든 것을 SQLAlchemy로 옮기려고합니다. 아마도 가장 많이 선언적 메서드를 사용하고 싶을 것입니다.Elixir에서 SqlAlchemy로 자식 상속을 사용하는 선언적, 다형성 노드
이 특정 상속 관계로 시작해야할지 모르겠습니다. 나는 sqlalchemy가이 방식으로 (또는 "마술처럼") 상속을 수행하지 않는다고 생각한다. 그리고 나는 마치 sqlalchemy에서 어떻게 보이는지 혼란 스럽다.
이것은 다형성 다중 테이블 조인이며 각 클래스는 매핑된다. 자체 데이터베이스 테이블에 저장합니다. 끝나면 다른 클래스 (여기에 포함되지 않음)에 'Comp'가있는 OneToMany가 생깁니다. Comp 하위 클래스에는 Comp.id에 대한 외래 키인 기본 키가 있습니다.
class Comp(Entity):
using_options(inheritance='multi')
parent = ManyToOne('Assembly', onupdate='cascade', ondelete='set null')
quantity = Field(Numeric(4), default=1)
def __repr__(self):
return "<Comp>"
## If not familiar with Elixir, each of the following "refid" point to a different
## table depending on its class. This is the primary need for polymorphism.
class CompAssm(Comp):
using_options(inheritance='multi')
refid = ManyToOne('Assembly', onupdate='cascade', ondelete='set null')
def __repr__(self):
return "<CompAssm>"
class CompItem(Comp):
using_options(inheritance='multi')
refid = ManyToOne('Item', onupdate='cascade')
def __repr__(self):
return "<CompItem>"
class CompLabor(Comp):
using_options(inheritance='multi')
refid = ManyToOne('Labor', onupdate='cascade')
def __repr__(self):
return "<CompLabor>"