recursive cursor error sqlite3 python

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour chers amis,je développe une application qui a trois classes. Une classe interface qui communique avec une base de données et une classe chargement qui communique avec la même BD et la classe 3 est la classe qui permet la connexion des deux classes précédentes a la BD.

Je reçois souvent cette erreur recursive cursor error après les recherches j’ai vu que cette erreur est du au faite que les deux classes(interface et chargement) accedent au même curseur.

Pour régler ce problème j’ai décidé de créer deux curseurs l’un pour l’interface et l’autre pour le chargement.

Ce qui me donne le code suivant:

class Requete:
    def __init__(self, nomBaseDeDonnee, type):
        self.nomBaseDeDonnee = nomBaseDeDonnee
        self.baseDeDonnees = sqlite3.connect(nomBaseDeDonnee, check_same_thread=False)
        if type == 0:
           self.cursor1 = self.baseDeDonnees.cursor()
        else:
           self.cursor2 = self.baseDeDonnees.cursor()

Est il une bonne idée? Sinon comment pourrais je procéder pour éviter ce problème?

Merci pour vos differentes reponses? :D

Édité par artragis

À la recherche de la connaissance.

+0 -0

Salut,

Si l’erreur est « recursive cursor error », c’est plutôt lié à un environnement multithread, non ? Les curseurs ne sont en effet pas partageables entre différents threads.

À quoi ressemble l’architecture de ton application à ce niveau ? Moi je ferais simplement en sorte d’avoir une connexion par thread. Voire de n’y accéder que dans un, suivant ce que tu fais avec ta DB.

Édité par entwanne

Auteur du sujet

oui dans mon application les classes interface et chargement sont lancées dans deux threads différents.Par rapport a ce que tu as dis Est ce que cela sous entend sue je dois dupliquer deux fois la classe requête ci dessus et appeler chaque classe avec l’une des requêtes spécifiques.

Édité par melo96

À la recherche de la connaissance.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte