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

2024-04-20 05:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个函数,该函数将生成一个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

正如你所看到的,它在一些地方是非常嵌套的,但我相信它会做的很好。然而,关于它的一些东西似乎在逻辑上有缺陷,但我就是不能把我的手指放在上面。我将解释我在下面代码中看到的一些模棱两可的事情的原因:

  • descripe函数返回一个元组列表,其中包含[(tableName,numberOfColumns,numberOfRows,numberOfCells)]
  • 我是从{t}\u库中选择的,因为我的centralDB中每个数据类型都有一个表
  • 我使用(62**n<;rowmount[0])来确定表中前面的值是否已经占用了当前迭代中elementTag长度的所有可能的字符集安排(62值列表)。你知道吗

如果你还有什么问题或意见,请问我。你知道吗


Tags: 函数in列表foriftyperangeet