0
我有2個表:用戶和組SQLAlchemy的查詢返回數據
類的聲明是這樣的:
class Groups(Base):
__tablename__ = 'groups'
group_id = Column(Integer, primary_key=True)
group_name = Column(Unicode(32))
user = relationship('User')
class User(Base):
__tablename__ = 'user'
user_id = Column(Integer, primary_key=True)
name = Column(Unicode(64))
email = Column(Unicode(64))
group_id = Column(Integer, ForeignKey('groups.group_id'))
於是一羣ID可以有多個USER_ID的附着它。現在
,我想查詢上表所示:
user_list_incomplete1 = DBSession.query(User.name, User.user_id, Groups.group_name).filter(User.group_id == Groups.group_id).order_by(User.user_id).all()
查詢適用於那些有一組ID聲明,但沒有返回值(空單),如果該字段爲空的用戶。
即使對於沒有組標識的用戶行,我應該如何編寫查詢以獲取數據?
刪除filter_by()子句並保持外連接(Groups)給了我正確的結果。謝謝karimtabet! –
不用擔心。值得注意的是,雖然我的答案爲您的問題提供了一個解決方案。這實際上並不是一個標準化的解決方案。規範化表不應允許空值(即group_id)。理想情況下,您將擁有一個關聯表,由組和用戶的外鍵組成。但這是另一個故事;) –
在我的'組'表中,我提到了'用戶'表的外鍵。 group_id字段爲空的唯一一點在'用戶'表中,並且在用戶初始化時。之後,管理員將能夠將其分配給已經存在的組。無論如何感謝您的建議:) –