为什么SELECT * FROM Table_name只显示第一行?

时间:2016-08-05 10:08:11

标签: python-2.7 sqlite

我使用python2创建一个sqlite数据库,当我想运行一个sql请求select时,它只显示表的第一行。

try:
        con = lite.connect('deko.db')
        c = con.cursor()
        c.execute(" CREATE TABLE IF NOT EXISTS disas(NAME varchar(20),STADDR INTEGER,SIZE INTEGER, DUMP varchar(10000) )")
        # c.execute("INSERT INTO disas VALUES ('"+function['name']+"', "+str(function['offset'])+", "+str(function['size'])+", '"+str(r2.cmd("p8" +" "+ str(function["size"])+ " @ " + function["name"] ))+"')")
        sql = "INSERT INTO disas VALUES ('{name}','{addr}','{size}', '{dump}')".format(
            name=function['name'],
            addr=function['offset'],
            size=function["size"],
            dump=r2.cmd("p8" +" "+ str(function["size"])+ " @ " + function["name"] ))
        c.execute(sql)
con.commit()
except lite.Error, e:
    if con:
        con.rollback()
        print "Error %s:" % e.args[0]
        sys.exit(1)
finally:
    if con:
        c.close()
        con.close()

try:
    c = lite.connect('deko.db')
    cur = c.cursor()
    cur.execute("SELECT * FROM disas")
    dataa = cur.fetchone()
    print dataa                 
    c.commit()
except lite.Error, e:
    if c:
        c.rollback()
        print "Error %s:" % e.args[0]
        sys.exit(1)
finally:
    if c:
        cur.close()
        c.close()

这是输出,只显示表格的第一行

(u'sym._init', 4195272, 26, u'4883ec08488b05a50520004885c07405e8530000004883c408c3')

1 个答案:

答案 0 :(得分:-1)

如果你有小桌子,那么 fetchall()方法是好的,但是如果你有一个大桌子的fetchall,你应该使用 fetchmany()方法。这总是一个很好的做法。你应该参考以下链接,这可能对你有所帮助。 http://www.mysqltutorial.org/python-mysql-query/