CSV到MySQL上传问题

时间:2015-12-01 18:12:16

标签: python mysql csv

我已经调整了this code(发布在下方以节省您的点击次数)为我工作。我有两个问题。

1)如何让上传者跳过标题行?现在它将上传我的CSV中的第一行,它只定义列。因此,我的数据库中的条目将是"名字,姓氏,电子邮件"在这个例子中。

2)读取2列"名字" "姓氏"并且显然空间搞砸它会抛出错误,说我的SQL语法有问题,并检查我的版本的手册。在我自己玩了之后,我发现如果我用_替换空间并且它有效。所以新专栏是" First_Name"和" Last_Name"。有没有办法不得错误,也没有使用下划线?

import csv
import MySQLdb

mydb = MySQLdb.connect(host='server IP',
    user='DB User Name',
    passwd='PW for DB user',
    db='name of DB')
cursor = mydb.cursor()

csv_data = csv.reader(file('test.csv'))
for row in csv_data:

    cursor.execute('INSERT INTO testcsv(First_Name, \
          Last_Name,email )' \
          'VALUES("%s","%s","%s")', 
          row)
#close the connection to the database.
mydb.commit()
cursor.close()
print "Done"

1 个答案:

答案 0 :(得分:2)

要跳过第一行,可以使用:

next(csv_data, None)    
for row in csv_data:

我不认为mysql接受带有空格的列名,所以强调听起来像是一个合理的解决方法,你仍然可以以不同的方式显示给用户。