gpt4 book ai didi

python - 在 Sq Lite 3 Python 中比较

转载 作者:搜寻专家 更新时间:2023-10-30 20:39:15 25 4
gpt4 key购买 nike

我有一个 Sq Lite 3 数据库,其中包含列 ID、名称和时间。所以我有最后一行并使用 python 放置在 var LAST_PERSON 中。

your_rank = "SELECT usr_name,time FROM rank WHERE ID = (SELECT MAX(ID)  FROM rank)"

我还有一个 var ROW,它循环遍历按时间排序的每一行。

sql = "SELECT usr_name,time FROM rank ORDER BY time "

for row in cur.execute(sql):

我要比较:

your_rank with the sorted by time row and get that last person's rank

我试过了

        for row in cur.execute(sql):
sql_list.append(row)
if(row is your_rank):
this_is_your_rank = rank_number
rank_number += 1

但我不能使用 Sq Lite 3 的 if 语句,而且我无法找到任何解决方案来比较它们。你能给我一个点击吗?

如果你不能,感谢你花时间阅读。

最佳答案

您想select count(ID) from rank where time < your_time或类似的。

当您只能要求数据库给您想要的答案时,循环遍历 SQL 结果以找出您想要的东西是笨拙的。

编辑:

您的第一个查询可以是:

SELECT MAX(ID),usr_name,time FROM rank

并且您可以将它们组合在一起以“获取最近的用户名、时间和他们的位置”:

SELECT 
MAX(ID),usr_name,time, (SELECT COUNT(ID)+1 FROM rank WHERE time < r.time) [Pos]
FROM
rank r

再次编辑,哦哦哦哦哦。不是“任何人都可以给我一个解决方案吗?”,你所说的“我不能使用 if 语句”并不清楚你的意思,但这里有一些推测:

如果您实际输入了 row is your_rank ,假设您实际执行了 your_rank SQL 查询并将结果保存在同一变量名称的顶部,那么它会失败,因为 is是一个 Python 关键字,用于测试 是否是同一事物(即同一事物有两个名称)。它不会测试两个独立的事物是否具有相同的值==是平等检验。

它也可能会失败,因为 SQL 查询的结果实际上是一个元组列表。每个row一个元组,并且取决于您将结果放入 your_rank 中的操作, 它们在比较时永远不会匹配。

如果您想保持相同的方法,这可能会奏效:

last_user = cursor.execute('select max(id),usr_name,time from rank').fetchone()

last_user_rank = 1
for row in cursor.execute('select id,usr_name,time from rank order by time asc'):
if last_user[2] > row[2]:
last_user_rank += 1
else:
break

print last_user, last_user_rank

关于python - 在 Sq Lite 3 Python 中比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27180641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com