使用Python while语句检查SQLite表中是否存在值

时间:2017-03-04 19:39:19

标签: python python-3.x numpy sqlite

我正在尝试创建一个函数,该函数将生成sqlite表中尚不存在的标记。以下是我到目前为止的情况:

def generateTag(type):

    elementTag = ""

    charSet = ["0", "1", "2", "3", "4", "5", "6", "7", "8",
               "9", "a", "b", "c", "d", "e", "f", "g", "h",
               "i", "j", "k", "l", "m", "n", "o", "p", "q",
               "r", "s", "t", "u", "v", "w", "x", "y", "z",
               "A", "B", "C", "D", "E", "F", "G", "H", "I",
               "J", "K", "L", "M", "N", "O", "P", "Q", "R",
               "S", "T", "U", "V", "W", "X", "Y", "Z"]

    centralDBInfo = Describe(centralDBName)
    rowAmount = [int(i[2]) for i in centralDBInfo]

    while True:
        for n in range (100):
            if 62**n < rowAmount[0] or n <= 1:
                for x in range(n):
                    randomSelection = numpy.random.randint(0,62)
                    elementTag += str(charSet[randomSelection])
                break

        tagQuery = "SELECT * FROM {t}_Base WHERE {et} EXISTS".format(t = type, et = elementTag)
        rowFetch = centralCursor.execute(tagQuery)

        if rowFetch == None:
            return elementTag

正如你所看到的,它在某些地方非常嵌套,但我相信它能完成这项工作。然而,关于它的一些东西似乎有逻辑上的缺陷,但我不能把手指放在它上面。我将解释你在下面的代码中看到的一些含糊不清的东西的推理:

  • Describe函数返回带有[(tableName,numberOfColumns,numberOfRows,numberOfCells)]的元组列表
  • 我从{t} _base中选择,因为我在centralDB中为每个数据类型提供了一个表
  • 我使用(62 ** n&lt; rowAmount [0])来确定表中的先前值是否已经占用了当前迭代中elementTag的长度的charset(62值列表)的所有可能排列。

如果您有任何其他问题或意见,请询问我。

0 个答案:

没有答案