with retrieving open example data python sql sqlite

retrieving - ¿Cómo obtener un solo resultado de una consulta SQLite en Python?



sqlite3 python (5)

Creo que estás buscando Cursor.fetchone() :

cursor.fetchone()[0]

¿Existe una manera elegante de obtener un único resultado de una consulta SELECT de SQLite cuando se usa python 2.7?

por ejemplo:

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

¿hay una manera de evitar los anidados for s y obtener el valor directamente? He intentado

maxVal = cursor[0][0]

Sin ningún éxito.


O podría escribir una función de envoltorio que, dado SQL, devuelva un resultado escalar:

def get_scalar_result(conn, sql): cursor=conn.cursor() cursor.execute(sql) return cursor.fetchone()[0]

Pido disculpas por el Python arriba posiblemente sintácticamente correcto, pero espero que tengas la idea.


Si no está utilizando pysqlite que tiene incorporado cursor.fetchone

cursor.execute("select value from table order by value desc limit 1")


o puede probar: cursor.execute("SELECT * FROM table where name=''martin''")


select count(*) from ... groupy by ... devuelve None lugar de 0 , por lo que fetchone()[0] llevaría a una excepción.

Por lo tanto

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