2017-06-14 3 views
0

Ich möchte eine Spalte in SQLite-Datenbanktabelle machen, in der ich sowohl Bruch- als auch Textwerte schreiben kann.sqlite3.OperationalError: doppelter Spaltenname: MOLECULE

c.execute("CREATE table MOLECULE(MOLECULE NUMBER INT, MOLECULE NAME TEXT, 'MOLECULAR FORMULA' TEXT)"); 

c.execute("INSERT INTO MOLECULE VALUES (1, 'WATER', 'H20')"); 

c.execute("INSERT INTO MOLECULE VALUES (2, 'X', ' BaFe0.5Nb0.5O3')"); 

conn.commit() 

ich versuche mit String es gibt mir eine Fehlermeldung: sqlite3.Operational Error: duplicate column name: MOLECULE

+0

Überprüfen Sie Ihre Tabelle für Existenz. –

+0

Jetzt hat es die Tabelle erstellt aber weiß nicht, wie man die Tabelle sieht? –

+0

Was meinst du mit sehen? Gehen Sie zu Ihrem Datenbank-Client und listen Sie alle Tabellen auf oder machen Sie eine Abfrage. –

Antwort

2

Ihre CREATE TABLE Aussage scheint das Problem zu sein. Sie müssen den Tabellennamen nicht wiederholen, wenn Sie Spalten definieren. Versuchen Sie dies mit:

c.execute("CREATE table MOLECULE (NUMBER INT, NAME TEXT, \"MOLECULAR FORMULA\" TEXT)"); 

Ich habe auch die einfachen Anführungszeichen ersetzt man mit entkam doppelten Anführungszeichen um die MOLECULAR FORMULA Kolonne hatte. Doppelte Anführungszeichen sind die Standardmethode, um Namen in SQLite zu umgehen. Wenn das nicht funktioniert, können Sie versuchen, Unterstriche als Trennzeichen zu verwenden, z. MOLECULAR_FORMULA, die kein Entkommen erfordern würde.

+0

Es hat Tischmolekül erstellt, wie kann ich den Tisch sehen? –

+0

Wenn in der Tabelle keine Daten vorhanden sind, ist nichts zu sehen. Versuchen Sie 'SELECT * FROM MOLECULE' ... aber wieder wäre es wahrscheinlich leer, wenn Sie keine Daten eingefügt haben. –

+0

für Zeile in c.execute ("SELECT * FROM MOLECULE"); Zeile syntex Fehler hier drucken. –

Verwandte Themen