c.fetchone()返回'NoneType'?

时间:2017-12-20 12:17:55

标签: python python-3.x sqlite

如果两个分数scor1scor2都不是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语句的结果:

this is fetchone: ('0',) from table:  a

这是错误:

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

1 个答案:

答案 0 :(得分:3)

使用<?php function my_theme_script(){ wp_enqueue_style('style-css', get_template_directory_uri().'/style.css'); wp_enqueue_style('bootstrap-css', get_template_directory_uri().'/bootstrap/css/bootstrap.min.css'); //wp_enqueue_script('jquery-js', get_template_directory_uri().'/js/jquery.min.js'); wp_enqueue_script('bootstrap-js', get_template_directory_uri().'/bootstrap/js/bootstrap.min.js'); } add_action('wp_enqueue_scripts','my_theme_script'); /*Add Menu in Wordpress Admin Dashboard*/ add_theme_support( 'menus' ); add_action( 'init', 'register_my_menu' ); function register_my_menu() { register_nav_menu( 'primary-menu', __( 'Primary Menu') ); } ?> 执行查询后,查询结果集中将显示查询结果,然后您可以使用execute方法进行迭代。

这里需要注意的是,c.fetch*迭代覆盖结果集,耗尽它。这类似于生成器,您只能迭代一次。

它的工作原理是这样的。想象一下指针指向要查询的结果集中的下一行。运行fetch*会得到一个如下所示的结果集 -

c.execute

致电 head |____ Result 1 Result 2 . . Result N 后,c.fetchone将返回下一行,然后前进一行 -

head

由于表中只有一行,因此对 head Result 1 (returned) |____ Result 2 . . Result N 的另一次调用将返回一个空列表。