如果数据库字段为空,则SQLAlchemy查询不返回任何数据

时间:2016-10-24 10:09:18

标签: python sqlalchemy

我有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的用户行,我应该如何编写查询以获取数据?

1 个答案:

答案 0 :(得分:0)

您定义的关系默认会生成inner join。你想要的是outer join

类似的东西:

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

有意义吗?无论是否存在外键匹配,外连接都将显示两个表的所有记录。