我已经调整了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"
答案 0 :(得分:2)
要跳过第一行,可以使用:
next(csv_data, None)
for row in csv_data:
我不认为mysql接受带有空格的列名,所以强调听起来像是一个合理的解决方法,你仍然可以以不同的方式显示给用户。