2 votes

Formater une requête SQL en Python sans l'exécuter

Python dispose de toutes sortes de bibliothèques pour s'interfacer avec les bases de données, ce qui permet de construire des requêtes SQL sans se soucier des injections SQL. Par exemple, avec sqlite3 :

for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
          ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
          ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
         ]:
    c.execute('insert into stocks values (?,?,?,?,?)', t)

Le problème est que je ne veux pas exécuter la requête, je veux juste la formater et obtenir la requête sous forme de chaîne. Je suppose que je pourrais échapper aux choses moi-même, mais ce n'est pas une solution très élégante. Il doit y avoir un moyen d'obtenir les requêtes formatées sans avoir à se connecter à une base de données et à les exécuter.

(Le contexte est que j'écris un filtre qui prépare une série d'instructions SQL à partir de l'entrée, mais je ne veux pas les exécuter sur une base de données spécifique, juste les sauvegarder pour plus tard).

5voto

S.Lott Points 207588

Il doit y avoir un moyen d'obtenir les requêtes formatées sans avoir à se connecter à une base de données et à les exécuter.

Pas vraiment.

Le SGBDR gère cela en interne avec des "requêtes préparées" et des "variables liées". Le "formaté" n'existe pas vraiment. N'importe où.

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