Je veux créer une table dans une base de données SQLite uniquement si elle n'existe pas déjà. Y a-t-il un moyen de faire ça? Je ne veux pas supprimer la table si elle existe, la créer uniquement si elle n'existe pas.
Je veux créer une table dans une base de données SQLite uniquement si elle n'existe pas déjà. Y a-t-il un moyen de faire ça? Je ne veux pas supprimer la table si elle existe, la créer uniquement si elle n'existe pas.
Réponses:
Sur http://www.sqlite.org/lang_createtable.html :
CREATE TABLE IF NOT EXISTS some_table (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);
CREATE UNIQUE INDEX IF NOT EXISTS some_index ON some_table(some_column, another_column);
Je vais essayer d'ajouter de la valeur à cette très bonne question et de construire sur la question de @ BrittonKerin dans l'un des commentaires sous la réponse fantastique de @David Wolever. Je voulais partager ici parce que j'avais le même défi que @BrittonKerin et que j'avais quelque chose qui fonctionnait (c'est-à-dire que je veux juste exécuter un morceau de code uniquement si la table n'existe pas).
# for completeness lets do the routine thing of connections and cursors
conn = sqlite3.connect(db_file, timeout=1000)
cursor = conn.cursor()
# get the count of tables with the name
tablename = 'KABOOM'
cursor.execute("SELECT count(name) FROM sqlite_master WHERE type='table' AND name=? ", (tablename, ))
print(cursor.fetchone()) # this SHOULD BE in a tuple containing count(name) integer.
# check if the db has existing table named KABOOM
# if the count is 1, then table exists
if cursor.fetchone()[0] ==1 :
print('Table exists. I can do my custom stuff here now.... ')
pass
else:
# then table doesn't exist.
custRET = myCustFunc(foo,bar) # replace this with your custom logic