提问人:Carlos González 提问时间:9/20/2023 更新时间:9/20/2023 访问量:51
如何在 Python 中将从数据库中获取的数字与 sqlite3 进行比较?
How can I compare numbers fetched from a database with sqlite3 in Python?
问:
我在编程方面很陌生,我正在使用 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=length,但我想知道如何从 [(1,), (2,)] 到 (1, 2)。
答:
0赞
H. Kürşat AKBURAK
9/20/2023
#1
您的代码 ıd 是元组,但您正在与 int 进行比较。 id = int(id) if id > previousId+1: id = previousId+1
你能试试这个吗
0赞
guidot
9/20/2023
#2
PS部分的部分答案:
flattened_tuple = tuple(x[0] for x in ((1,), (2,), (3,)))
收益 率。(1, 2, 3)
0赞
Abdulrahman Sheikho
9/20/2023
#3
我不明白你想做什么,但我可以修复你的错误:
那是因为 是 类型,你不能在 和 之间应用添加操作 您需要访问元组中的值,因此请尝试:id
tuple
+
tuple
int
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:
id = id[0] # using `[0]` means that you're accessing the tuple's first value
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
注意:其类型是为了简化它,因为 SQLite3 查询的结果是id
tuple
tuple
如果你不想使用和感觉到这总是看起来像,那么你可以做以下事情:[0]
tuple
(value,)
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
评论
id
enumerate
previousId