2016-11-17 8 views
1

Ich mache eine Python-Anwendung für ein Wahlsystem. Ich verwende sqlite3, um eine Datenbank zu erstellen, die lokal auf dem Computer des Benutzers gespeichert wird.Überprüfen, ob SQL-Tabelle in Python existiert

Ich brauche einen Weg, um zu überprüfen, ob eine Tabelle existiert oder nicht, weil die Tabellen in der Datenbankdatei jedes Benutzers erstellt werden müssen, wenn sie die Anwendung ausführen, aber wenn die Anwendung ausgeführt wird, wenn die Tabellen existieren und ich nur eine Anweisung erstelle Bei den Tabellen wird ein Fehler ausgegeben, da die Tabelle bereits existiert.

hier etwas vereinfachte Beispielcode

conn = sqlite3.connect('firefight') 
c = conn.cursor() 
if table 'info' exists: 
    #do nothing 
else: 
    c.execute("CREATE TABLE info(PRIMARY KEY id int, username text, password text)") 

Antwort

2

Ich denke, es gibt hier zwei Möglichkeiten. Erstens hat SQLite eine Erklärung, die die Tabelle nur schaffen würde, wenn es nicht existiert:

CREATE TABLE IF NOT EXISTS info (PRIMARY KEY id int, username text, password text) 

Aber wenn Sie eine Datenbank generische Art und Weise wollen, dies zu umgehen, können Sie einfach eine regelmäßige CREATE TABLE Anweisung ausführen und dann Griff der Ausnahme in Python.

+0

kann dies auch mit INSERT INTO verwendet werden? – Shniper

+0

Sie können das Einfügen von Einfügungen unter Verwendung einer eindeutigen Integritätsbedingung stoppen, aber dies ist ein anderes Thema. –

1

können Sie diese SQL ausführen:

select count(*) from sqlite_master where type='table' and name='table name' 

wenn Sie 1 erhalten, besteht die Tabelle existiert sonst nicht.

+0

Ich bekomme 'sqlite3.OperationalError: keine solche Tabelle: my_table' – NinjaFart