gpt4 book ai didi

python - 使用过滤器在数据存储中查询多对多

转载 作者:搜寻专家 更新时间:2023-10-30 23:10:39 24 4
gpt4 key购买 nike

我必须有 2 个实体模型

class User(ndb.Model):
username = ndb.StringProperty()
# other properties

class Item(ndb.Model):
type = ndb.StringProperty()
# other properties

UserItem 之间存在多对多关系

class UserItem(ndb.Model):
user = ndb.KeyProperty(kind=User)
item = ndb.KeyProperty(kind=Item)
# other properties

如何使用 Item.type 的过滤器查询 UserItem。类似于 select * from UserItem where UserItem.user = user_key and UserItem.item.type = item_type

我知道我可以用 StructuredProperty 做到这一点,但实体限制为 1mb。如果模型无法实现,我应该如何对关系进行建模以获取在数据存储中使用过滤器工作的查询?

谢谢

最佳答案

不能这样做,你不应该尝试。数据存储不是关系数据库,不应用作关系数据库。

与其使用链接 UserItem 表,不如考虑在其中一个实体中存储键列表。例如,您可以向用户添加一个字段:

items = ndb.KeyProperty(kind=Item, repeated=True)

然后使用您的用户对象,按键获取项目并过滤出您需要的项目:

user_items = ndb.get_multi(my_user.items)
relevant_items = [item for item in user_items if item.type == my_type]

确切的结构将取决于您的用例,但重点不是像您在 SQL 中那样根据传统关系来思考。

关于python - 使用过滤器在数据存储中查询多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017007/

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