通过添加后缀来避免重复的键名

时间:2011-05-07 21:26:50

标签: python google-app-engine

我需要将我的标题作为键名,问题是这可能会导致重复的键名问题,我如何检查它是否存在,如果确实存在则将-1加到结尾,或者如果 - 的话加-2 1存在。

keyName = "hello"
duplicates = Entry.get_by_key_name(keyName)
            if duplicates:
                keyName = keyName+("-1")

如何在找到唯一名称之前循环添加1?

非常感谢任何帮助 Ĵ

2 个答案:

答案 0 :(得分:3)

keyName = "hello"

testName = keyName
suffix = 0
while Entry.get_by_key_name(testName):
  suffix += 1
  testName = "%s-%d" % (keyName, suffix)

keyName = testName

答案 1 :(得分:2)

思考问题的另一种方式:

from itertools import imap, dropwhile, count

def make_name(i):
    stem = "foo"
    return stem if i == 0 else "{0}-{1}".format(stem, i)

def in_universe(name):
    return bool(Entry.get_by_key_name(name))

seq = dropwhile(in_universe, imap(make_name, count()))
keyName = seq.next()