gpt4 book ai didi

python - 计算多对多关系中的行数 (SQLAlchemy)

转载 作者:太空狗 更新时间:2023-10-29 18:00:27 26 4
gpt4 key购买 nike

我在博客条目和标签之间建立了多对多关系。现在我想知道特定标签有多少个条目。

设想以下模型(简化):

rel_entries_tags = Table('rel_entries_tags', Base.metadata,
Column('entry_id', Integer, ForeignKey('entries.id')),
Column('tag_id', Integer, ForeignKey('tags.id'))
)

class Entry(Base):
__tablename__ = 'entries'

id = Column(Integer, primary_key=True)
title = Column(String(80))
text = Column(Text)

tags = relationship('Tag', secondary=rel_entries_tags, backref=backref('entries'))

def __init__(self, title, text):
self.title = title
self.text = text
self.tags = tags

class Tag(Base):
__tablename__ = 'tags'

id = Column(Integer, primary_key=True)
name = Column(String(80), unique=True, nullable=False)

def __init__(self, name):
self.name = name

我计算标签条目数量的方法是 len(db_session.query(Tag).get(1).entries)。问题是,当它获取 db_session.query(Tag).get(1).entries 时,SQLAlchemy 选择所有条目及其所有列作为标记,但是,我只想要条目的数量,而不是条目本身。对于这个问题,是否有更优化的方法?

谢谢。

最佳答案

session.query(Entry).join(Entry.tags).filter(Tag.id==1).count()

或者如果您已经有标签

session.query(Entry).with_parent(mytag, "entries").count()

关于python - 计算多对多关系中的行数 (SQLAlchemy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567666/

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