저는 계산을 수행하기 위해 선언적 SQLAlchemy 클래스를 사용하고 있습니다. 계산의 일부는 두 테이블 사이에 외래 키 관계가없는 다른 테이블에서 제공하는 모든 구성에 대해 계산을 수행해야합니다.서로 외래 키 관계가없는 개체에 컬렉션을 포함 할 수 있습니까?
이 비유는 실제 응용 프로그램과 같지 않지만, 내가 원하는 것을 이해하는 데 도움이 될 것입니다.
나는 자동차 세트와 페인트 색상 목록이 있습니다. 자동차 객체는 가능한 모든 색상
from sqlalchemy import *
from sqlachemy.orm import *
def PaintACar(car, color):
pass
Base = declarative_base()
class Colors(Base):
__table__ = u'colors'
id = Column('id', Integer)
color= Column('color', Unicode)
class Car(Base):
__table__ = u'car'
id = Column('id', Integer)
model = Column('model', Unicode)
# is this somehow possible?
all_color_objects = collection(...)
# I know this is possible, but would like to know if there's another way
@property
def all_colors(self):
s = Session.object_session(self)
return s.query(A).all()
def CarColorFactory(self):
for color in self.all_color_objects:
yield PaintACar(self, color)
내 질문에 차를 제공하는 공장이있다 : 어떻게 든 all_color_objects을 생산하는 가능을? 세션을 찾고 all_colors 속성에서와 같이 수동으로 쿼리를 실행하지 않아도됩니까?
모든 점에 대해 존경심이 깊은 이유가 무엇입니까? 나에게 반대로 디자인 패턴 냄새. –
세션을 받고 원하는 쿼리를 생성하는 것 외에 더 좋은 방법은 무엇입니까? 컬렉션에 추가 할 수 있고 자동으로 물건을 플러시 할 수있는 기능을 찾고 있습니까? (Session에 객체를 추가하기 만하면됩니까?) object_session (self)을 사용하는 것을 좋아하지 않습니까? (mixin 클래스 나 숨길 수있는 클래스를 만들 수 있습니까?) 문제가 무엇인지는 분명하지 않습니다. 여기에있는 객체는 부모 클래스와 아무런 관계가 없으므로 SQLAlchemy가 추가 할 수있는 특정 정보가 없습니다. – zzzeek
@zzeek. 그건 기본적으로 - object_session (자기)에 대해 싫어하지만, 믹스 인 클래스를 제안한다면, 그걸로 살 수있을 것 같네요. 그걸 답으로 만들면 받아 들일거야. – paulluap