gpt4 book ai didi

python - 使用 SQLAlchemy 按属性或相关属性查询

转载 作者:行者123 更新时间:2023-12-01 01:27:15 24 4
gpt4 key购买 nike

我的抽象是:Book只有一个用户(作为作者),并且与用户存在多对多关系/em>(作为合作者):

class UserBook(Base):
__tablename__ = 'user_book'
user_id = Column(String(512), ForeignKey('user.id'), primary_key=True)
book_id = Column(String(512), ForeignKey('book.id'), primary_key=True)
collaboration_type = Column(Integer, default=1)
book = relationship('Book', back_populates='users')
user = relationship('User', back_populates='books')


class User(Base):
__tablename__ = 'user'

id = Column(String(512), primary_key=True)
books = relationship('UserBook', back_populates='user')


class Book(Base):
__tablename__ = 'book'

id = Column(String(512), primary_key=True)
author = Column(String(512), ForeignKey('user.id'), nullable=False)
collaborators = relationship('UserBook', back_populates='book')
name = Column(String(512))
description = Column(String(512), default='')

如果可能的话,我希望选择我作为作者我作为合作者的所有书籍,使用 SQLAlchemy 声明性查询。

我能够与协作者建立连接,但我不确定如何使用作者过滤器。

最佳答案

您可以使用or_运算符与您的过滤器一起获取当前用户是作者或合作者的所有书籍。例如:

from sqlalchemy import or_


curr_id = 'current_user_id'

session.query(Book).\
outerjoin(UserBook).\
filter(or_(Book.author == curr_id, UserBook.user_id == curr_id)).\
all()

关于python - 使用 SQLAlchemy 按属性或相关属性查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53231278/

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