Chcę utworzyć tabelę w bazie danych SQLite tylko wtedy, gdy jeszcze nie istnieje. Czy jest na to sposób? Nie chcę upuszczać tabeli, jeśli istnieje, tylko utwórz ją, jeśli nie istnieje.
Chcę utworzyć tabelę w bazie danych SQLite tylko wtedy, gdy jeszcze nie istnieje. Czy jest na to sposób? Nie chcę upuszczać tabeli, jeśli istnieje, tylko utwórz ją, jeśli nie istnieje.
Odpowiedzi:
Ze strony 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);
Spróbuję wnieść wartość dodaną do tego bardzo dobrego pytania i oprzeć się na pytaniu @ BrittonKerin w jednym z komentarzy pod fantastyczną odpowiedzią Davida Wolvera. Chciałem się tutaj podzielić, ponieważ miałem takie samo wyzwanie jak @BrittonKerin i dostałem coś działającego (tj. Po prostu chcę uruchomić fragment kodu tylko, jeśli tabela nie istnieje).
# 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