Voglio creare una tabella in un database SQLite solo se non esiste già. C'è un modo per fare questo? Non voglio abbandonare la tabella se esiste, crearla solo in caso contrario.
Voglio creare una tabella in un database SQLite solo se non esiste già. C'è un modo per fare questo? Non voglio abbandonare la tabella se esiste, crearla solo in caso contrario.
Risposte:
Da 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);
Proverò ad aggiungere valore a questa ottima domanda e baserò sulla domanda di @ BrittonKerin in uno dei commenti sotto la fantastica risposta di @David Wolever. Volevo condividere qui perché avevo la stessa sfida di @BrittonKerin e ho fatto funzionare qualcosa (cioè voglio solo eseguire un pezzo di codice solo se la tabella non esiste).
# 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