gpt4 book ai didi

sqlalchemy - 如何在 sqlalchemy 中的类内部查询

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

我有一个与 Item 类具有一对多关系的 User 类:

class User(Base):
items=relationship(Item)
def method(self):
for item in self.items
if self.items.itemname=='my item'
#do something

现在我想在 User 类中的方法中访问 User 的某些项目(已过滤)。编写一个遍历所有项目的 for 循环(如示例中所示)或在类中运行查询是否更有效(性能明智)? (假设普通用户有几千个项目)。我也不知道如何在类里面运行查询!有没有类似 self.query.filter()或者我应该在类中定义一个 session 并运行 session.query(Items).filter() ?

最佳答案

如果您确定当前实例已附加到 session ,您可以使用 sqlalchemy.orm.session.object_session 获取它。

所以它将是:

from sqlalchemy.orm.session import object_session

class User(Base):
...

def method(self):
session = object_session(self)
session.query(Items).filter(...)

编辑 :

作为替代方案,我可以建议 Dynamic Relationship Loaders .在这种情况下,您将关系作为可以进一步定义的查询:
class User(Base):
items=relationship(Item, lazy='dynamic')

user1 = session.query(User).get(user_id)
user1.items.filter(...)

关于sqlalchemy - 如何在 sqlalchemy 中的类内部查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14337244/

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