如何比较从数据库中获取的数字与Python中的sqlite3?

问题描述 投票:0回答:2

我在编程方面相当新手,我正在使用 sqlite3 在 python 中工作,并且我有一列数字已排序,但可能存在间隙(1、2、4、7、8...)。我想做的是创建一个 For 循环,在其中按顺序比较数字(ID),并消除间隙(1、2、3、4、5...)。

功能开始

def deleteGaps(idTuple):

    idList = list(idTuple) #converting the fetched Tuple to a List to be able to modify it
    previousId=-1 # -1 because the first element is [0]

    for id in idList:     
        if id > previousId+1:
           id = previousId+1
           print(id) #Just for testing, later I'll work on the side of updating the table

    previousId = id

它给了我以下错误

    if id > previousId+1:
       ^^^^^^^^^^^^^^^^
TypeError: '>' not supported between instances of 'tuple' and 'int'

如果我去 print(idList),它会给我“[(1,), (2,), (4,), (7,), (8,)]”而不是预期的“(1, 2, 4、7、8)”。这可能是问题的根源,但我不知道如何正确进行转换。

有什么建议吗?谢谢大家。

PS:我意识到我可以获取元组的长度并将 1, 2, 3... 分配给 n=lenght,但我想知道如何从 [(1,), (2, )] 到 (1, 2) 无论如何。

python list sqlite tuples
2个回答
0
投票

您的代码 id 是元组,但您正在与 int 进行比较。

 id = int(id) if id > previousId+1: id = previousId+1

你可以试试这个吗


0
投票

PS部分的部分答案:

flattened_list = tuple(x[0] for x in ((1,), (2,), (3,)))
© www.soinside.com 2019 - 2024. All rights reserved.