Du musst in der Tabelle sqlite_master nachsehen.
Zuerst hatte ich einen recht aufwändigen Code, den Gerold dann verkürzt hat
Code: Alles auswählen
def install():
'''Erstellt die Datenbankstruktur'''
#type='table' --> Jede der Tabellen in der Datenbank ist vom Typ table
#name='xy' --> Dort wird nach einem bestimmtem Namen gesucht. Da musste halt den Namen deiner Tabelle eingeben.
sql = """SELECT name FROM sqlite_master WHERE type='table' AND name='addresses'"""
self.cur.execute(sql)
row = self.cur.fetchone()
#Wenn in dem geholten Datensatz (kann nur einer sein, da es in einer Datenbank keinen Tabellennamen 2 mal gibt) nichts drinnen steht - die Tabelle also nicht existiert - dann wird sie erstellt.
if not row:
sql = '''CREATE TABLE addresses (
id INTEGER PRIMARY KEY NOT NULL,
vorname VARCHAR(30),
zuname VARCHAR(40),
nachname VARCHAR(30),
anrede VARCHAR(20),
adresse VARCHAR(50),
plz VARCHAR(15),
ort VARCHAR(25),
land VARCHAR(30),
privatnummer VARCHAR(35),
privatfaxnummer VARCHAR(35),
mobilnummer VARCHAR(35),
bueronummer VARCHAR(35),
buerofaxnummer VARCHAR(35),
email VARCHAR(20)
)'''
self.cur.execute(sql)
self.con.commit()
Ich halte das erlichgesagt für die bessere Lösung als die mit IF NOT EXISTS, weil das eben abwärtskompatibel ist
Edit:
Achso eine Spalte?! Oder meinst du eine Tabelle? Naja, ich lass es einfach mal stehen, evtl hilfts ja jemanden