c、 fetchone()返回'NoneType'?

2024-04-26 17:40:37 发布

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

我想构建一个函数,如果两个分数scor1和{}不都是0,则返回所有表中最小的行数:

def mini(tablelist):
mini = 1000
for table in tablelist:
    c.execute("SELECT numar_par FROM " + table + "")
    c_min = len(c.fetchall())

    if c_min is None:
        mini = 0
    else:
        c.execute("SELECT scor1 FROM " + table + " ORDER BY numar_par DESC LIMIT 1")
        print("this is fetchone:",c.fetchone(),'from table: ',table)
        scor1 = c.fetchone()[0]
        c.execute("SELECT scor2 FROM " + table + " ORDER BY numar_par DESC LIMIT 1")
        scor2 = c.fetchone()[0]
        sum = int(scor1) + int(scor2)
        if c_min < mini and sum >0:
            mini = c_min
return mini

这是print语句的结果:

^{pr2}$

这是一个错误:

File "D:\pariuri\python\Pycharm test1\Test11 peste 0.5\functii.py", line 181, in mini
scor1 = c.fetchone()[0]
TypeError: 'NoneType' object is not subscriptable

Tags: infromexecuteifistableminselect
1条回答
网友
1楼 · 发布于 2024-04-26 17:40:37

使用execute执行查询后,查询结果将在查询结果集中可用,然后可以使用c.fetch*方法对其进行迭代。在

这里要注意的是,fetch*将在结果集上迭代,耗尽结果集。它的工作原理类似于生成器,只能迭代一次。在

它是这样工作的。假设有一个指针指向要查询的结果集中的下一行。运行c.execute得到的结果集如下-

 head
   |____ Result 1
         Result 2
         .
         .
         Result N

在调用c.fetchone之后,head将返回下一行,并前进一行-

^{pr2}$

由于表中只有一行,所以对fetchone的另一个调用将返回一个空列表。在

相关问题 更多 >