簡體   English   中英

如果數據庫字段為空,則SQLAlchemy查詢不返回任何數據

[英]SQLAlchemy query returns no data if a database field is empty

我有2個表:用戶和組

類聲明如下:

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但如果該字段為空則不返回任何內容(空列表)的那些用戶。

我應該如何編寫查詢以獲取數據,即使對於沒有組ID的用戶行也是如此?

默認情況下,您定義的關系將導致內部聯接 您想要的是外部聯接

就像是:

user_list_incomplete1 = DBSession.query(User.name, User.user_id, Groups.group_name)\
    .outerjoin(Groups)\
    .filter()... etc

說得通? 外部聯接將顯示兩個表的所有記錄,無論是否有外鍵匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM