Bonjour à tous! 
Je travaille sur une petite application (python + wxpython) qui utilise une base de données.
J'ai créé une classe pour la connection à la bdd et divers opérations (insert, select, delete).
2 des méthodes de ma classe me posent souçi et je pense que les problèmes ont la même cause...
Ma méthode me permettant de récupérer des données fonctionne mais me renvoie un message d'erreur:
1 2
| c.execute("select titre, code, date from codes where id = " + idrow)
sqlite3.OperationalError: near " ": syntax error |
J'ai essayé différentes manières mais aucune n'y fait quoi que ce soit...
Comme ceci
1 2
| c.execute("select titre, code, date from codes where id = %d" % idrow)
TypeError: %d format: a number is required, not unicode |
Comme cela:
1 2
| c.execute("select titre, code, date from codes where id = %s" % idrow)
sqlite3.OperationalError: near " ": syntax error |
J'ai essayé aussi comme ça:
c.execute('select titre, code, date from codes where id = "%s"' % idrow)
Mais là c'est bizarre, la chaine que je crée à partir du résultat et que j'envoie dans un TxtCtrl apparait bien dans celui-ci, mais disparait aussitôt après!..., et aucun message d'erreur!
Si je teste mon code de base [ "select titre, code, date from codes where id = xx"; ] dans une console sqlite3 en renseignement moi-même la valeur de "id", ça fonctionne normalement, et aucun message d'erreur.
C'est tout aussi bizarre avec une autre de mes méthodes qui sert à supprimer des lignes, même message d'erreur:
1 2
| c.execute("delete from codes where id = " + idrow)
sqlite3.OperationalError: near " ": syntax error |
Et en plus cette opération au lieu de ne supprimer que la ligne concernée supprime également toutes les lignes dont l'id est inférieur à idrow (mais pas les id supérieur).
Alors que testée en console ça ne supprime que la ligne voulue!
De tout ceci j'en déduis qu'il y a un souci avec le passage de cette variable...
Je suis à court d'idée et de connaissance; toute aide sera la bienvenue!
Merci par avance!
Partager