2017-11-29 4 views
1

Ich beginne jetzt Python-Skripte zu verwenden, um Datenbanken in Verbindung mit MySQL zu verwalten. Ich stehe vor einem Problem mit dem Syntax-Fehler und kann nicht herausfinden, warum.MySQL + Python auf Raspbian Syntax Fehler

Wenn ich den folgenden Code:

import MySQLdb 
import time 
conn = MySQLdb.connect("localhost","username","password","DataBase") 
c= conn.cursor() 
c.execute("SELECT * FROM table") 
rows=c.fetchall() 
for eachRow in rows: 
print eachRow 

ich die Zeilen in meinem Tisch bekommen, so dass alles in Ordnung ist. Allerdings, wenn ich die INSERT-Anweisung wie folgt verwenden:

import MySQLdb 
import time 
conn = MySQLdb.connect("localhost","username","password","DataBase") 
c= conn.cursor() 
c.execute("INSERT INTO table(collumn1,collumn2) VALUES(23:EA:4A:7F:A1,Someone)") 
c.execute("SELECT * FROM table") 
rows=c.fetchall() 
for eachRow in rows: 
print eachRow 

ich die Syntaxfehler erhalten und ich sage, dass es „in der Nähe von 'Collumn1, collumn2) Werten (23: EA: 4A: 7F: A1, Someone)' an Linie 1"

ich habe die Dokumentation überprüft und ich glaube, die richtige Syntax verwenden. Habe versucht, mehrere Feldtypen (varchar, text, ...) und mit Semikolon am Ende oder nicht. collumn1 ist varchar (14) collumn1 ist Text MySQL Ver 14.14 Distrib 5.5.57 für debian-linux-gnu (armv71)

+0

Versuchen Sie Anführungszeichen um Werte – Don

+0

nicht im Zusammenhang mit Ihrer INSERT Frage stellen: Ihre endgültige 'print' Anweisung innerhalb der' for' Schleife sollte durch 4 Leerzeichen *, vorzugsweise eingekerbt werden *. Einzug ist wichtig in Python. Außerdem zeigt Ihr 'print' an, dass Sie das alte Python 2 verwenden. In diesem Fall sollten Sie es als solches in einer SO-Frage markieren (das Standard-Tag setzt Python 3 voraus). – cdarke

+0

@ fodma1 Kein Glück damit, versucht mit dem Abstand zwischen Tabellenname und Paranthesis und immer noch gleichen Fehler. – Zeka

Antwort

0

es so versuchen:

INSERT INTO "table" (collumn1,collumn2) VALUES('23:EA:4A:7F:A1','Someone') 

table ist ein reserviertes Schlüsselwort In SQL sollten Sie daher vermeiden, Ihre Tabelle table zu benennen. Es ist wie dein Kind zu benennen Kid, oh warte .. Aber sowieso, wenn Sie vorhaben, reservierte Schlüsselwörter zu verwenden, müssen Sie sie in doppelte Anführungszeichen einschließen.

Wie für die Werte ist Someone ein String ist, so sollten Sie es auf jeden Fall in einfache Anführungszeichen wickeln. Ich bin mir nicht sicher über den Typ von 23:EA:4A:7F:A1, aber ich denke, das ist auch eine Zeichenfolge, also besser wickeln Sie das auch.

+0

@Zeka ein Glück damit? – fodma1