voilà mon problème :
je veux faire des requêtes SQLite3 en Python 2.6… Et je n’y arrive pas
Bon, écrire une requête, ça va.
Faire un SELECT, ça va aussi…
mais maintenant, je veux faire un UPDATE en ne modifiant que certaines valeurs, et naturellement je veux protéger toutes mes chaînes.
Et là, c’est le drame !
Malgré la doc, je comprends vaguement qu’il faut faire
query = “”“UPDATE MYTABLE SET foo=?,bar=? WHERE MYKEY=‘VALUE’ “””
base.execute(query, (“value1”, value2))
base.commit()
Mais ça ne marche pas, je ne suis pas sûr que les chaînes soient bien échappées, je ne sais pas à quoi ressemble la requête finale, je n’ai pas le code d’erreur de la transaction, je ne sais pas ce qui se passe si une valeur vaut None, …
Bon, déjà, tu peux simplifier par
query = "UPDATE MYTABLE SET foo=?,bar=? WHERE MYKEY=‘VALUE’ "
afin d’éviter les ambiguïtés avec les '.
Ensuite, suite à base.execute(query, (“value1”, value2)), ta requête sera du type
UPDATE MYTABLE SET foo=“value1”,bar=? WHERE MYKEY=‘VALUE’
et le ? restant aura la valeur de value2. Ne pas oublier que Python est très fortement typé donc si value2=“toto” tu aura
UPDATE MYTABLE SET foo=“value1”,bar=“toto” WHERE MYKEY=‘VALUE’
et si value2=42, tu aura
UPDATE MYTABLE SET foo=“value1”,bar=42 WHERE MYKEY=‘VALUE’
Le mix “value1” et ‘VALUE’ ne devrait pas trop géner.