如何从python中的SQLite查询中获取单个结果?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从python中的SQLite查询中获取单个结果?相关的知识,希望对你有一定的参考价值。
在使用python 2.7时,是否有一种优雅的方法可以从SQLite SELECT查询中获取单个结果?
例如:
conn = sqlite3.connect('db_path.db')
cursor=conn.cursor()
cursor.execute("SELECT MAX(value) FROM table")
for row in cursor:
for elem in row:
maxVal = elem
有没有办法避免那些嵌套的for
s并直接获取值?我试过了
maxVal = cursor[0][0]
没有任何成功。
答案
我想你正在寻找Cursor.fetchone():
cursor.fetchone()[0]
另一答案
或者你可以编写一个包装器函数,给定SQL,返回一个标量结果:
def get_scalar_result(conn, sql):
cursor=conn.cursor()
cursor.execute(sql)
return cursor.fetchone()[0]
我为上面可能不太符合语法的Python道歉,但我希望你明白这个想法。
另一答案
如果你没有使用内置cursor.fetchone
的pysqlite
cursor.execute("select value from table order by value desc limit 1")
另一答案
select count(*) from ... groupy by ...
返回None
而不是0
,所以fetchone()[0]
将导致例外。
因此
def get_scalar_from_sql(sqlcur, sqlcmd):
# select count(*) from .... groupy by ... returns None instead of 0
sqlcur.execute(sqlcmd)
scalar = 0
tuple_or_None = sqlcur.fetchone()
if not tuple_or_None is None:
(scalar,) = tuple_or_None
return scalar
另一答案
或者你可以尝试:cursor.execute("SELECT * FROM table where name='martin'")
以上是关于如何从python中的SQLite查询中获取单个结果?的主要内容,如果未能解决你的问题,请参考以下文章
Sqlite - 如果有相同的号码,如何查询呼叫日志继续获取单个记录只有连续记录计数?
如何从sqlite +phonegap中的表中获取第一列名称
如何从android中的单个查询中获取联系人的名字,姓氏,电子邮件ID