Raspbian上的MySQL + Python产生语法错误

问题描述 投票:1回答:1

我现在开始使用Python脚本来管理与MySQL相关的数据库。

我面临语法错误的问题,似乎无法弄清楚原因。

当我运行以下代码时:

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(column1, column2) VALUES(23:EA:4A:7F:A1,Someone)")
c.execute("SELECT * FROM table")
rows=c.fetchall()
for eachRow in rows:
print eachRow

我收到语法错误

“在第1行的'Column1,column2)值附近(23:EA:4A:7F:A1,Someone)']

我已经检查了文档,并相信我使用的语法正确。尝试使用多种字段类型(varchar,text等),并在末尾使用分号。

  • column1的类型为varchar(14)
  • column1是文本类型

[使用mysql Ver 14.14 Distrib 5.5.57 for debian-linux-gnu(armv71)

python mysql linux raspberry-pi raspbian
1个回答
0
投票

尝试这样:

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

table是SQL中的保留关键字,因此应避免命名表table。就像命名您的孩子Kid,哦,等等。但是无论如何,如果您打算使用保留关键字,则必须将它们用双引号引起来。

关于值,Someone是一个字符串,因此您绝对应该将其用单引号引起来。我不确定23:EA:4A:7F:A1的类型,但我想那也是一个字符串,所以最好也将其包装。

© www.soinside.com 2019 - 2024. All rights reserved.