как получить единый результат запроса SQLite в python?

Есть ли элегантный способ получить один результат запроса SQLite SELECT при использовании python 2.7?

например:

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

есть ли способ избежать вложенных для s и получить значение напрямую? Я пробовал

maxVal = cursor[0][0]

безуспешно.

29
задан iliaden 10 August 2011 в 13:09
поделиться

2 ответа

Или вы можете написать функцию-обертку, которая, учитывая SQL, возвращает скалярный результат:

def get_scalar_result(conn, sql):
    cursor=conn.cursor()
    cursor.execute(sql)

    return cursor.fetchone()[0]

Я извиняюсь за возможно менее синтаксически правильный Python выше, но я надеюсь, что вы поняли идею.

4
ответ дан 28 November 2019 в 01:18
поделиться

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
0
ответ дан 28 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: