Python MySQLdb Programming Error: 1064 when inserting data

不羁岁月 提交于 2019-12-12 16:25:39

问题


I have this list

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()

when I try to execute the query I get this error

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")

match is varchar(150),tournamentname is varchar(150),matchdate is DATE


回答1:


match is a keyword in MySQL. You can use it as a column name if you backquote it

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

but it would be more convenient if you chose some other name for this column.


Look at what happens when you try to create a table with a column called 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)



回答2:


Modify your fourth line to:

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


来源:https://stackoverflow.com/questions/22226488/python-mysqldb-programming-error-1064-when-inserting-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!