Python SQLite返回值

Python SQLite返回值,python,sqlite,Python,Sqlite,我正在尝试从此语句返回一个数值: c = db.execute("""SELECT *, rowid FROM members WHERE barcode = '%s' AND debit > 0 LIMIT 50""" % (s,)) 但我得到的是返回值: sqlite3.Cursor object at 0xb6cb2720 我应该如何处理此游标对象才能获得结果?尝试以下操作: for row in c: print row['rowid'] 我的问题之一是,我使用了错误

我正在尝试从此语句返回一个数值:

c = db.execute("""SELECT *, rowid FROM members WHERE barcode = '%s' AND debit > 0 LIMIT 50""" % (s,))
但我得到的是返回值:

sqlite3.Cursor object at 0xb6cb2720
我应该如何处理此游标对象才能获得结果?

尝试以下操作:

for row in c:
    print row['rowid']

我的问题之一是,我使用了错误的SQL查询来获取所需的数据。见:

c = db.execute("""SELECT "debit" FROM "members" WHERE "barcode" = '%s' LIMIT 1""" % (s,))
然后我会得到答复:

(0,)
这正是我所需要的。现在,为了实际解决如何比较它,我需要说“如果c不等于(0),那么打印‘交叉’,否则打印‘勾选’…”


非常感谢你的帮助

试试这个>>
打印(cursorObject.fetchone()[0])

你试过枚举
c
对于c:…
中的行,要在执行SELECT语句后检索数据,可以将光标视为迭代器,调用光标的fetchone()方法检索单个匹配行,或者调用fetchall()获取匹配行的列表。
直接枚举
c
,而不是
c.fetchall()
将需要更少的内存,因为整个结果集不会一次全部加载到内存中,而是一次加载一行,并在下一行之前丢弃。更新。谢谢你的提示。这就是为什么我如此喜欢回答问题。我的思维方式是否经过验证,无论哪种方式,我都学到了一些东西。@cdhowie实际上SQLite不一定会返回整个结果集,但在从磁盘上的事务日志返回下一个结果集之前,它肯定会在内存中缓冲一些(除非它是内存中的数据库)。。。但是是的,仍然肯定比
列表
'ing或
.fetchall
'ing结果更有效。@JonClements当然。缓冲有利于提高性能。但是DB引擎知道应该缓冲多少才能更好地执行;将整个集合拖到内存中可能要糟糕得多。@cdhowie一个小小的权衡是,如果它“没有那么大”,那么请求整个集合通常比请求块更有效(不需要事务锁和日志太长时间)。。。但我要偏离主题:)