2016-06-17 13 views
1

Jedes Mal, wenn ich diesen Code ausführen, bekomme ich "Spalte Name1 ist nicht eindeutig". Warum?IntegrityError: Spalte Name1 ist nicht eindeutig

graph = fb.graph.api(token) 
f = graph.get_object(cat = 'single', id = '765898450131958', fields=   ['likes']) 
strona = f['id'] 
liczbalajkow = f['likes'] 
print liczbalajkow 
conn = sqlite3.connect('fb_likes2.sqlite') 
cur = conn.cursor() 
cur.execute(''' 
CREATE TABLE IF NOT EXISTS Likes (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, name1 TEXT UNIQUE PRIMARY KEY, likes_count INTEGER, date DATES)'''); 
cur.execute('''INSERT INTO Likes (name1, likes_count, date) 
VALUES (?, ?, ?)''', (strona, liczbalajkow, date.today(),)); 
conn.commit() 

Antwort

1

Wahrscheinlich nur weil es wahr ist und Sie versuchen, die EINZIGARTIGE CONSTRAINT auf name1 zu verletzen. Ihre CREATE TABLE-Anweisung definiert das Feld name1 als eindeutig: name1 TEXT UNIQUE PRIMARY KEY.

+1

erklären, dass dies bedeutet, dass er versucht hat, zwei Zeilen mit dem gleichen Wert für name1 (wahrscheinlich null oder die leere Zeichenfolge) einzufügen. – Hogan

+0

auch wenn ich UNIQUE PRIMARY KEY lösche und nur name1 TEXT belasse, gibt es immer noch "column name1 is not unique". –

+0

Haben Sie die Tabelle gelöscht, die Sie beim ersten Ausführen erstellt haben? Weil es die Erstellung der Tabelle überspringt, da sie existiert und keinen Fehler verursacht. – Dresden

0

Der Grund ist, dass Sie versuchen, in Tabelle doppelten Eintrag für Spalte 'Name1' einzufügen. Wahrscheinlich rufen Sie diesen Befehl innerhalb einer Schleife auf, und die vom FB empfangenen Daten enthalten den gleichen Seitennamen für mehr als ein Suchergebnis. Es kann auch sein, dass Sie die alte Datenbank nicht gelöscht haben (vom vorherigen Lauf).

Sie können versuchen, Dateiwerte anzuzeigen oder zu speichern, die Sie in die Tabelle einfügen möchten.

Korrekte Lösung wäre Tabelle außerhalb Schleife zu erstellen. Es sollte wie sein:

  1. offene Datenbankverbindung
  2. Tabelle erstellen, wenn nicht
  3. klare Sätze aus der Tabelle existieren (Duplikate zu vermeiden)
  4. Startschleife für FB fragt
  5. einfügen Datensatz Datenbank
  6. close loop
  7. Datenbankverbindung schließen
Verwandte Themen