gpt4 book ai didi

sqlalchemy - 如何获取所有不处于多对多关系的行

转载 作者:行者123 更新时间:2023-12-05 01:03:00 25 4
gpt4 key购买 nike

我需要获取所有不引用该组的用户。在 SQL 中,它就像 NOT EXIST。但我不知道如何在 SQLAlchemy 的 ORM 中做到这一点。

models.py
group_table = Table('assoc_groups_users', Base.metadata,
Column('user_id', Integer, ForeignKey('users.id')),
Column('group_id', Integer, ForeignKey('groups.id'))
)

class Users(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String(50), unique=False)

class Groups(Base):
__tablename__ = "groups"
id = Column(Integer, primary_key=True)
title = Column(String(127))

users = relationship("Users",
secondary=books_table,
backref=backref("books", lazy='dynamic'))

最佳答案

使用 relationships(小而简单的代码,但有点冗长的 SQLEXISTS 并且并不真正需要在 上加入组表):

query = session.query(Users).filter(~Users.groups.any())

否则,使用outerjoinwhere,非常直接,生成类似于一对一查询的SQL:

query = (session.query(Users)
.outerjoin(group_table, group_table.c.user_id == Users.id)
.filter(group_table.c.user_id == None)
)

关于sqlalchemy - 如何获取所有不处于多对多关系的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com