2017-11-29 5 views
1

MySQLに関連してデータベースを管理するためにPythonスクリプトを使い始めました。 私は構文エラーの問題に直面しており、その理由を理解できないようです。MySQL + Python on Raspbian Syntax Error

私は次のコードを実行すると:

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 

をすべてがうまくているので、私は私のテーブルの行を取得することができます。 次のように私がINSERTなステートメントを使用する場合しかし:

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 

を私は構文エラーを取得し、私はそれが「近く 'Collumn1、collumn2)値(23:EA:4A:7F:A1、誰か)' だと言うで1行目

私はドキュメントをチェックして、正しい構文を使用していると思います。 複数のフィールドタイプ(varchar、text、...)を使用して、最後にセミコロンを付けてみましたか。 collumn1はVARCHAR(14) collumn1でこのようにそれを試してみてくださいテキスト のdebian-のlinux-gnuのために14.14按分5.5.57版のMySQLを使用して(armv71)

+0

値の前後に引用符を入れてみてください – Don

+0

INSERTの問題とは関係がありません。 'for'ループ内の最後の' print'ステートメントは*インデントされていなければなりません。インデントはPythonでは重要です。また、 'print'は古いPython 2を使用していることを示しています。その場合は、SOの質問(デフォルトのタグはPython 3と仮定します)でタグ付けする必要があります。 – cdarke

+0

@ fodma1 tablenameとparanthesisの間のスペースで試してみましたが、それと同じエラーです。 – Zeka

答えて

0

です:

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

tableは予約キーワードですSQLではテーブルtableの名前を付けないでください。あなたの子供に名前をつけるのと同じようにKid、待っています。しかし、予約されたキーワードを使用する予定がある場合は、二重引用符で囲む必要があります。

値に関しては、Someoneは文字列なので、間違いなく一重引用符で囲む必要があります。私は23:EA:4A:7F:A1のタイプについてはわかりませんが、それも文字列だと思います。

+0

@Zekaこれで運がいい? – fodma1