2016-06-15 87 views
0

我忙于尝试使用python创建MySQL表而无济于事。我连接到MySQL和我创建了数据库,但不断收到以下错误消息:使用Python创建MySQL表时出错

ProgrammingError: 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 
'INT NOT NULL AUTO_INCREMENT, 
EOD_Date DATE, 
Symbol VARCHAR(10) NOT NULL, 
Holding' at line 3 

我已经通过创建表的语法文件看,我想不通,是什么问题http://dev.mysql.com/doc/refman/5.7/en/create-table.html

这里是我的代码来创建表:

cursor.execute("""CREATE TABLE prices 
(
Index INT NOT NULL AUTO_INCREMENT, 
EOD_Date DATE, 
Symbol VARCHAR(10) NOT NULL, 
Holdings_Q INT NOT NULL, 
EOD_Price FLOAT(,2) NOT NULL, 
OIL_Price FLOAT(,2) NOT NULL, 
Account_Number INT NOT NULL, 
Account_Type VARCHAR(50) NOT NULL, 
Asset_Class VARCHAR(50) NOT NULL, 
Security_Desc VARCHAR(100) NOT NULL, 
Security_Type VARCHAR(30) NOT NULL, 
Holdings_Val FLOAT(,2), NOT NULL 
PRIMARY KEY (Index))ENGINE=InnoDB""") 

任何建议或输入将不胜感激

回答

0

Index是MySQL中的保留关键字。

cursor.execute("""CREATE TABLE prices 
(
`Index` INT NOT NULL AUTO_INCREMENT, 
EOD_Date DATE, 
Symbol VARCHAR(10) NOT NULL, 
Holdings_Q INT NOT NULL, 
EOD_Price FLOAT(,2) NOT NULL, 
OIL_Price FLOAT(,2) NOT NULL, 
Account_Number INT NOT NULL, 
Account_Type VARCHAR(50) NOT NULL, 
Asset_Class VARCHAR(50) NOT NULL, 
Security_Desc VARCHAR(100) NOT NULL, 
Security_Type VARCHAR(30) NOT NULL, 
Holdings_Val FLOAT(,2), NOT NULL 
PRIMARY KEY (`Index`))ENGINE=InnoDB""") 
+0

感谢@fabricator我更新的代码,包括“索引”必要但我仍然得到确切的相同的错误消息 – da4l

+0

我:如果你有使用,作为字段名,你可以像剔转义已经设法回答我的问题,当我能够 – da4l

+0

@ da4l时,我将发布代码,它不是'单引号',它是'反引号'。 –