Je dois exécuter dans Python une requête SQL qui ajoute une nouvelle colonne, dans SQLite3. p>
Le problème est que parfois, il existe déjà. Ainsi, avant d'exécuter la requête, j'ai besoin de vérifier si la colonne existe déjà. p>
Si cela le fait, je ne vais pas exécuter la requête. P>
Merci beaucoup à l'avance! P>
3 Réponses :
Vous pouvez obtenir une liste de colonnes pour une table via l'instruction suivante:
PRAGMA table_info('table_name');
La question est étiquetée 'python' mais cela ne vous montre pas comment faire cela en python
imo ceci est un meilleur choix que de construire cas spécial em> requêtes. p> Vous pouvez envelopper le code ci-dessus dans une fonction addColumn (curseur, table, colonne) afin que vous puissiez la réutiliser,
De plus, cela rendra le code plus lisible. p> p>
Pour une raison quelconque, vous voulez un moyen explicitement de vérifier si une colonne est déjà présente, vous pouvez trouver une recette python complète ci-dessous. Jusqu'à vous pour envelopper le code dans une fonction ou l'améliorer
import sqlite3 sqlite_db = 'my_sqlite_db.sqlite' col_to_test = 'my_column' table_to_test = 'my_table_name' con = sqlite3.connect(sqlite_db) check_sqlite_col_exist_query = """SELECT count(*) > 0 FROM pragma_table_info('{}') WHERE name=?;""".format with con: q = con.execute(check_sqlite_col_exist_query(table_to_test), (col_to_test, )) col_exist = q.fetchone() col_exist = col_exist[0] > 0 if not col_exist: print('"{}" column does not exist in table "{}"!'.format(col_to_test, table_to_test)) # Do stuff here like adding your column or something else else: print('"{}" column already exist in table "{}"!'.format(col_to_test, table_to_test))