gpt4 book ai didi

database - 在 App Engine 数据存储中查找重复项

转载 作者:太空狗 更新时间:2023-10-30 01:47:19 24 4
gpt4 key购买 nike

我在 App Engine 的数据存储区中有一些重复的元素(不是整行,而是其中的大部分字段)。

找到它们的最佳方法是什么?

我有重复的整数和字符串字段(以防比较一个比另一个快)。

谢谢!

最佳答案

一种愚蠢但快速的方法是获取您关心的字段,将它们连接成一个长字符串,并将它们存储为引用原始实体的 DB_Unique 实体的键。每次您执行 DB_Unique.get_or_insert() 时,您都应该验证引用是对正确的原始实体,否则,您有一个副本。这可能应该在 map reduce 中完成.

类似于:

class DB_Unique(db.Model):
r = db.ReferenceProperty()

class DB_Obj(db.Model):
a = db.IntegerProperty()
b = db.StringProperty()
c = db.StringProperty()

# executed for each DB_Obj...
def mapreduce(entity):
key = '%s_%s_%s' % (entity.a,entity.b,entity.c)
res = DB_Unique.get_or_insert(key, r=entity)
if DB_Unique.r.get_value_for_datastore(res) != entity.key():
# we have a possible collision, verify and delete?
# out two entities are res and entity

有一些边缘情况可能会逐渐出现,例如如果您有两个实体,其 b 和 c 分别等于 ('a_b', '') 和 ('a','b_'),因此两者的串联都是“a_b_”。所以使用一个你知道不在你的字符串中的字符而不是'_',或者让 DB_Unique.r 成为引用列表并比较所有这些。

关于database - 在 App Engine 数据存储中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798858/

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