gpt4 book ai didi

python - SQLAlchemy:使用 id 而不是对象添加关系?

转载 作者:太空狗 更新时间:2023-10-29 18:24:43 25 4
gpt4 key购买 nike

是否可以使用 id 而不是对象添加到 SQLAlchemy 关系中?

例如,考虑两个声明性的 SQLAlchemy 类 Review 和 Artist,它们之间存在一种关系:

class Review(Base):
artist_id = Column(Integer, ForeignKey('artist.id'))
artist = relationship(Artist, backref=backref('reviews', order_by=id))
# etc.

class Artist(Base):
# etc.

有了要添加到艺术家的评论 ID 列表,我似乎需要从 ID 中查找艺术家,然后将艺术家对象添加到评论中,如下所示:

for review_id in review_ids:
review = session.query(Review).filter(Review.id==review_id).first()
artist.reviews.append(review)

我确信跳过查找并只添加 ID 会更有效,但这可能吗?

最佳答案

您最好的选择可能是编写一个 update针对支持表的表达式。否则,你不能真正修改一个 Review无需实际查询(这就是您所做的;您实际上根本没有修改 Artist)。

假设Review.id是主键,大致是:

conn = session.connection()
conn.execute(Review.__table__
.update()
.values(artist_id=artist_id)
.where(Review.id.in_(review_ids))
)

关于python - SQLAlchemy:使用 id 而不是对象添加关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024462/

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