5
假設我有以下的SQLAlchemy類中定義:如何確定動態SQLAlchemy關係的類型(例如多對一)?
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
computers = relationship('Computer', backref=backref('owner', lazy='dynamic'))
class Computer(Base):
__tablename__ = 'computer'
id = Column(Integer, primary_key=True)
ownerid = Column(Integer, ForeignKey('person.id'))
進一步假設我已訪問了懶惰的查詢對象是這樣的:
relation = getattr(Computer, 'owner')
我怎樣才能確定是否relation
指的單個實例Person
(也就是說,在多對一的關係中,就像在這個例子中一樣),或者如果relation
引用了一組實例(就像一對多關係一樣)?換句話說,我如何確定動態SQLAlchemy關係對象的關係類型?
我不確定我是否理解這個問題,但在您的示例中,爲什麼不檢查它是集合(例如列表)還是單個項目?這完全獨立於SQLAlchemy,完全可以利用SQLAlchemy的ORM特性和數據庫抽象。 – javex 2012-09-25 12:59:51
你大部分是正確的:我認爲正確的解決方案是檢查'isinstance(關係,列表)是否 - 如果爲true,那麼我們可以像列表一樣使用它,但如果爲false,則必須調用'relation.one )'以便將關係映射到具體實例。如果你在下面添加一個答案,我可以獎勵你(如果可以的話,請加入我在這裏陳述的警告)。 – argentpepper 2012-10-09 17:14:04