0
我有SQLAlchemy的映射一個簡單的一對多關係:SQLAlchemy的選擇關係類型
Base = declarative_base()
class Type(Base):
__tablename__ = "entity_types"
type = Column(String(100), primary_key=True)
description = Column(String(300))
class Entity(Base):
__tablename__ = "entities"
id = Column(Integer, primary_key=True)
type_id = Column('type', String(100), ForeignKey(Types.type),
nullable=False)
type = relation(Type, backref='entities')
value = Column(Text, nullable=False)
我想查詢一個實體使用過所有類型。在純SQL中,我可以通過以下方式來實現:
SELECT entity_types.*
FROM entities
JOIN entity_types ON entities.type == entity_types.type
GROUP BY entity_types.type
如何使用SqlAlchemy的ORM引擎解決此問題?
我已經試過這些疑問,但他們都沒有回我想要什麼:
session.query(Action.type).group_by(Action.type).all()
session.query(Type).select_from(Action).group_by(Type).all()
我也嘗試使用options(joinedload('type'))
,但是我發現,這只是用於強制立即加載並繞過延遲加載。
此外:我剛剛在Entity
的relation
加入backref
。我認爲通過查詢count(Type.entities) > 0
可以解決問題,但我無法弄清楚如何完全形成有效的ORM查詢。