【发布时间】:2014-07-07 05:23:28
【问题描述】:
我使用 python shell 并执行一个'insert' sql,它出现“SyntaxError: invalid syntax”,任何人都可以告诉我我的 MySQL 语句中的错误是什么?谢谢
cursor.execute("insert into monitor_task (job_id, task_id, host, port, active, last_attempt_time, last_status last_message, last_success_time, last_metrics, last_metrics_raw) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", [1L, 0, 'hh-hadoop-srv-ct01.bj', 11101, True, datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<UTC>), 2, '', datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<UTC>), '', ''])
File "<console>", line 1
cursor.execute("insert into monitor_task (job_id, task_id, host, port, active, last_attempt_time, last_status last_message, last_success_time, last_metrics, last_metrics_raw) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", [1L, 0, 'hh-hadoop-srv-ct01.bj', 11101, True, datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<UTC>), 2, '', datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<UTC>), '', ''])
^
SyntaxError: invalid syntax
并描述表 monitor_task:
mysql> desc monitor_task;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| job_id | int(11) | NO | MUL | NULL | |
| task_id | int(11) | NO | | NULL | |
| host | varchar(128) | NO | MUL | NULL | |
| port | int(11) | NO | | NULL | |
| active | tinyint(1) | NO | | NULL | |
| last_attempt_time | datetime | NO | | NULL | |
| last_status | int(11) | NO | | NULL | |
| last_message | varchar(128) | NO | | NULL | |
| last_success_time | datetime | NO | | NULL | |
| last_metrics | longtext | NO | | NULL | |
| last_metrics_raw | longtext | NO | | NULL | |
+-------------------+--------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
【问题讨论】:
-
箭头指向你出错的地方。你不能说
tzinfo=<UTC>,你需要一个实际的 tzinfo 对象。 -
last_status last_message语法错误。必须有一个逗号。即last_status,last_message -
@suhail 是的,我已经修复了语法错误。非常感谢。