sqlite3.ProgrammingError: Ne peut pas fonctionner sur un fermé de la base de données. [Python] [sqlite]

Je suis l'aide d'une fonction commune pour l'exécution de tous sqlite requêtes dans une classe. Tout cela fonctionne, jusqu'à ce que je utiliser une boucle for avec plus d'un élément dans la liste.

Ici de la commune de la fonction qui s'exécute sqlite requêtes:

def executeQuery(self, query, params = ()):
        results = {}
        try:
            cur = self.conn.cursor()
            cur.execute(query, params)
            self.conn.commit()
            rows = cur.fetchall()

            results['status'] = 'success'
            result = []
            if rows:
                column = map(lambda x: x[0], cur.description)
                for row in rows:
                    result.append( dict(zip(column, row)) )

            results['results'] = result

        except self.conn.Error, e:
            if self.conn:
                self.conn.rollback()

            print "Error: %s" % e.args[0]
            results['status'] = 'failure'
            results['results'] = e.args[0]

        finally:
            if self.conn:
                self.conn.close()

        return results

Et voici la boucle qui me met à la base de données fermée erreur:

stages = self.getStageByDate(2000)
        for stage in stages['results']:
            print stage['name']
            additives = self.getStageAdditives(stage['name'])
            print additives
            for additive in additives['results']:
                print additive

Erreur semble provenir de la getStageAdditives() comme il le retour des 4 éléments, tandis que getStageByDate() retour seulement 1.

Il me semble que la connexion à la base de données n'est pas fermé avant la deuxième tentative de connexion. Pourquoi est-ce arrivé? Il ne s'est pas produit lorsqu'il est utilisé avec base de données MySQL. Quelles sont les solutions à ce problème?

OriginalL'auteur DominicM | 2014-04-13