ili*_*den 29 python sql 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
Run Code Online (Sandbox Code Playgroud)
有没有办法避免那些嵌套的fors并直接获取值?我试过了
maxVal = cursor[0][0]
Run Code Online (Sandbox Code Playgroud)
没有任何成功.
mou*_*uad 59
我想你正在寻找Cursor.fetchone():
cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)
或者,您可以编写一个包装函数,在给定 SQL 的情况下返回标量结果:
def get_scalar_result(conn, sql):
cursor=conn.cursor()
cursor.execute(sql)
return cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)
我为上面可能在语法上不正确的 Python 道歉,但我希望你能理解。
小心,接受的答案可能会导致TypeError!
由于fetchone()文档:
获取查询结果集的下一行,返回单个序列,或者当没有更多数据可用时返回 None。
因此,某些 SQL 查询cursor.fetchone()[0]可能会导致None[0]引发TypeError异常。
获得第一行的更好方法None是:
first_row = next(cursor, [None])[0]
如果 SQL 查询为空,next将使用默认值[None]并从该列表中获取第一个元素,而不会引发异常。
| 归档时间: |
|
| 查看次数: |
43764 次 |
| 最近记录: |