2014-03-06 58 views
3

我有這個名單Python的MySQLdb的編程錯誤:1064插入數據時

info=[[u' Rasta.eon 2 - 1 Rasta.Xd ', u'Razer CS:GO Tournament 2', u'26-02-2014'], [u' XPC 1  - 2 WP.GG ', u'Roccat DotA 2 Tournament', u'26-02-2014']] 

conn= MySQLdb.connect(host='localhost',user='root',passwd='',db='ee') 

c = conn.cursor() 
query = "INSERT INTO todaysmatches (match,tournamentname,matchdate) VALUES (%s,%s,%s)" 
c.executemany(query, info) 
conn.commit() 
conn.close() 

當我嘗試執行查詢我得到這個錯誤

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'match,tournamentname,matchdate) VALUES \n(' Rasta.eon 2 - 1 Rasta.Xd ','Razer C' at line 1") 

比賽爲varchar(150),tournamentname是varchar(150),matchdate是DATE

回答

3

match是MySQL中的關鍵字。你可以使用它作爲列名,如果你BACKQUOTE它

INSERT INTO todaysmatches (`match`,tournamentname,matchdate) VALUES (%s,%s,%s) 

但如果此列選了一些其他的名字會更方便。


看看當你嘗試創建一個表,一個名爲match列會發生什麼:

mysql> create table foo (match varchar(150), tournamentname varchar(150), matchdate DATE); 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'match varchar(150), tournamentname varchar(150), matchdate DATE)' at line 1 
mysql> create table foo (`match` varchar(150), tournamentname varchar(150), matchdate DATE); 
Query OK, 0 rows affected (0.03 sec) 
+0

哦,是的。 '2014年2月26日'應該是'2014年2月26日'。 – unutbu

0

修改你的第四行:

query = "INSERT INTO todaysmatches (`match`,`tournamentname`,`matchdate`) VALUES (%s,%s,%s)"