MySQL for Python:整数值不正确

MySQL for Python:整数值不正确,python,mysql,csv,Python,Mysql,Csv,我的问题与这里的问题相同: 在将csv文件导入Mysql时,我不断收到警告“整数值不正确”。我已经阅读了这里的所有相关问题/答案,上面的链接是我的直接问题。但是我试图实现Python 2.7中给出的答案,但我似乎无法让它正常工作 下面的代码是我试图实现上述帖子的答案。我认为问题在于在我的Load DATA Local INFLE语句中使用“Set”子句的语法……我非常感谢您的帮助,因为MySQL会自动将空INT转换为“0”,这会打乱我的分析,因为我希望空格为null。我的代码是: import

我的问题与这里的问题相同:

在将csv文件导入Mysql时,我不断收到警告“整数值不正确”。我已经阅读了这里的所有相关问题/答案,上面的链接是我的直接问题。但是我试图实现Python 2.7中给出的答案,但我似乎无法让它正常工作

下面的代码是我试图实现上述帖子的答案。我认为问题在于在我的Load DATA Local INFLE语句中使用“Set”子句的语法……我非常感谢您的帮助,因为MySQL会自动将空INT转换为“0”,这会打乱我的分析,因为我希望空格为null。我的代码是:

import MySQLdb
db = MySQLdb.connect(blah, blah, blah)
cursor = db.cursor()

sql = """CREATE TABLE PLAYER(
       PLAYER_ID INT,
       DATE DATETIME,
       BATTING_AVERAGE INT
       )"""

cursor.execute(sql)
statement = """LOAD DATA LOCAL INFILE 'path/file.csv'
INTO TABLE PLAYER
COLUMNS TERMINATED BY ','
SET BATTING_AVERAGE = IF(@BATTING_AVERAGE='',NULL,@BATTING_AVERAGE)
IGNORE 1 LINES;"""
此代码给出的错误是:


编程错误:(1064,“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解正确的synatx使用“第5行忽略1行”)

SET和
IGNORE
子句是向后的。尝试交换它们:

statement = """LOAD DATA LOCAL INFILE 'path/file.csv'
INTO TABLE PLAYER
COLUMNS TERMINATED BY ','
IGNORE 1 LINES
SET BATTING_AVERAGE = IF(@BATTING_AVERAGE='',NULL,@BATTING_AVERAGE);"""

由于某种原因,以结尾的列在我看来是错误的。我想知道是否应该是以@JonClements结尾的
字段。这两个字段的语法都是正确的:谢谢,这很有效。虽然我简化了本例的代码,但表中还有其他一些列也存在同样的问题。当我尝试在“statement”中设置不同列名的最后一行下面放置一行时,我得到了与编程错误相同的错误。如果不太麻烦的话,如果有另一列的值应该是null而不是0,您能在代码中添加另一个Set子句吗?非常感谢@用户7186你可以;用逗号分隔
设置列a=1,列b=2,…
@user7186可能是因为
@
前缀引用了变量而不是列?可能这个变量从未被初始化过。尝试删除
@
字符。