Question

Je dois exécuter en python une requête SQL qui ajoute une nouvelle colonne, en sqlite3.

Le problème est que parfois il existe déjà. Donc, avant l'exécution de la requête, je dois vérifier si la colonne existe déjà.

Si oui, alors je ne vais pas exécuter la requête.

Est-il possible à sqlite de le faire? Ou dois-je faire à travers un bloc try-catch dans le code python?

Merci beaucoup à l'avance!

Était-ce utile?

La solution

Vous pouvez obtenir une liste de colonnes pour une table via la déclaration suivante:

PRAGMA table_info('table_name');

Plus de détails sur les commandes de Pragma sont availabel le site web sqlite

Autres conseils

OMI,

conn = sqlite3.connect(':memory:')
c = conn.cursor()
try:
    c.execute('ALTER TABLE mytable ADD COLUMN newcolumn;')
except:
    pass # handle the error
c.close()

est un meilleur choix que la construction cas spécial requêtes.

Vous pouvez envelopper le code ci-dessus dans une fonction AjouteColonne (curseur, table, colonne) afin que vous puissiez le réutiliser,
plus il va rendre le code plus lisible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top