16 votes

Curseur SQLite en Python avec déclaration

Je have le code suivant:

def executeOne(self, query, parameters):
    with self.connection as cursor:         
        cursor.execute(query, parameters)
        return cursor.fetchone()

Quand j'appelle cette méthode, cela me lance l'erreur suivante: AttributeError: 'sqlite3.Connection' object has no attribute 'fetchone'

Qu'est-ce que je fais de travers?

28voto

eandersson Points 8571

La raison pour laquelle vous recevez l'erreur est que la classe de connexion n'a pas de méthode appelée fetchone. Vous devez ajouter .cursor() pour créer une instance de curseur, puis l'envelopper avec closing pour que cela fonctionne dans une instruction with.

from contextlib import closing
with closing(self.connectio.cursor()) as cur:

La manière la plus simple de gérer cela est de supprimer l'instruction with et de fermer manuellement le cursor.

cur = self.connection.cursor() 
try:
    cur.execute(query, parameters) 
    return cur.fetchone()
finally:
    cur.close()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X