我使用SQLAlchemy创建了一个SQLite数据库,它存储了一些文档的书目数据,我想查询每个文档的作者号。在
我知道如何在原始SQL中实现这一点,但是如何使用SQLAlchemy实现相同的结果呢?不使用join
是可能的吗?在
以下是我定义的类:
class WosDocument(Base): __tablename__ = 'wos_document' document_id = Column(Integer, primary_key=True) unique_id = Column(String, unique=True) ...... authors = relationship('WosAuthor', back_populates='document') class WosAuthor(Base): __tablename__ = 'wos_author' author_id = Column(Integer, primary_key=True, autoincrement=True) document_unique_id = Column(String, ForeignKey('wos_document.unique_id')) document = relationship('WosDocument', back_populates='authors') last_name = Column(String) first_name = Column(String)
我的目标是获得与此SQL查询相同的结果:
^{pr2}$我尝试了以下代码:
session.query(WosDocument.unique_id, len(WosDocument.authors)).all() session.query(WosDocument.unique_id, func.count(WosDocument.authors)).all()
第一行出错,第二行没有给出所需的结果,它只返回一行,我不知道它是什么:
[('000275510800023', 40685268)]
由于WosDocument
对象具有一对多关系authors
,我认为可以查询每个文档的作者编号,而不必显式使用join
,但我无法找到如何使用SQLAlchemy来实现这一点。在
你能帮我吗?谢谢!在
如果您在模型中编写了正确的关系。然后查询如下:
join()
文档的详细信息是 https://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.join如果不明确地
join()
,则需要将parent.relations
作为字段处理。在相关问题 更多 >
编程相关推荐