Une alternative générique, utilisant seulement trois lignes
def select_column_and_value(db, sql, parameters=()):
execute = db.execute(sql, parameters)
fetch = execute.fetchone()
return {k[0]: v for k, v in list(zip(execute.description, fetch))}
con = sqlite3.connect('/mydatabase.db')
c = con.cursor()
print(select_column_and_value(c, 'SELECT * FROM things WHERE id=?', (id,)))
Mais si votre requête ne renvoie rien, il y aura une erreur. Dans ce cas...
def select_column_and_value(self, sql, parameters=()):
execute = self.execute(sql, parameters)
fetch = execute.fetchone()
if fetch is None:
return {k[0]: None for k in execute.description}
return {k[0]: v for k, v in list(zip(execute.description, fetch))}
ou
def select_column_and_value(self, sql, parameters=()):
execute = self.execute(sql, parameters)
fetch = execute.fetchone()
if fetch is None:
return {}
return {k[0]: v for k, v in list(zip(execute.description, fetch))}
0 votes
Duplicata possible de Python - mysqlDB, résultat sqlite comme dictionnaire
7 votes
@vy32 : Cette question date de juillet 2010, celle dont vous avez donné le lien date de novembre 2010. C'est donc celle-là qui est fausse. Et comme on peut s'y attendre, le commentaire inverse a été mis sur celle-là :-)