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

标签 python mysql linux raspberry-pi raspbian

我现在开始使用 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

语法错误

"near 'Column1,column2) Values(23:EA:4A:7F:A1,Someone)' at line 1"

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

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

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

最佳答案

像这样尝试:

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

table 是 SQL 中的保留关键字,因此您应该避免将表命名为 table。这就像给你的 child 取名 Kid,哦等等..但是无论如何,如果你打算使用保留关键字,你必须用双引号将它们括起来。

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

关于python - Raspbian 上的 MySQL+Python 产生语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47549851/

相关文章:

python - 如何基于 Excel 工作表创建特定的数据框?

python - Google Wave Python 教程 - 没有任何反应

python - Python 2.6.6 中的小数和科学记数法问题

php - 从表中选择日期范围内的行

linux - 如何在 Linux 中执行 python 脚本?

python - 如何按多个元素对字典列表进行排序

sql - 从选择命令创建一个新表

php - 从 php foreach 插入多行

linux - 滚动 KTextEdit 开始

linux - 内核线程与用户线程之间的上下文切换