ana*_*ana 7 database google-app-engine duplicates
我在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
Run Code Online (Sandbox Code Playgroud)
有几个边缘情况可能会爬升,例如,如果你有两个实体,b和c分别等于('a_b','')和('a','b_'),那么连接是' a_b_'为两者.所以使用你知道的字符不是在你的字符串而不是'_',或者DB_Unique.r是一个引用列表并比较所有这些字符.
| 归档时间: |
|
| 查看次数: |
1406 次 |
| 最近记录: |