ALTER TABLE SQLite: comment vérifier si une colonne existe avant la table change?
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!
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.