Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CSV到MySQL上传问题_Python_Mysql_Csv - Fatal编程技术网

Python CSV到MySQL上传问题

Python CSV到MySQL上传问题,python,mysql,csv,Python,Mysql,Csv,我已经适应了(发布在下面以节省您的点击)为我工作。我有两个问题 1) 如何让上传程序跳过标题行?现在它将上传我的CSV中的第一行,它只定义了列。因此,在本例中,进入我的数据库的条目将是“名字、姓氏、电子邮件” 2) 两列读“First Name”和“Last Name”,显然空格把它搞砸了,抛出一个错误,说我的SQL语法有问题,并检查手册中的版本。在我自己玩过之后,我发现如果我用一个uu替换这个空间,它就会起作用。所以新的栏目是“名字”和“姓氏”。有没有办法不获取错误,也不使用下划线 impor

我已经适应了(发布在下面以节省您的点击)为我工作。我有两个问题

1) 如何让上传程序跳过标题行?现在它将上传我的CSV中的第一行,它只定义了列。因此,在本例中,进入我的数据库的条目将是“名字、姓氏、电子邮件”

2) 两列读“First Name”和“Last Name”,显然空格把它搞砸了,抛出一个错误,说我的SQL语法有问题,并检查手册中的版本。在我自己玩过之后,我发现如果我用一个uu替换这个空间,它就会起作用。所以新的栏目是“名字”和“姓氏”。有没有办法不获取错误,也不使用下划线

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"

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

next(csv_data, None)    
for row in csv_data:

我认为mysql不接受带空格的列名,因此下划线听起来是一种合理的解决方法,您仍然可以以不同的方式显示给用户。

所以只需在中添加[1:]部分即可?我试过了,它说“TypeError:'csv.reader'对象没有属性'\u getitem'我不知道为什么我会用粗体显示,它应该是两个下划线,然后是'getitem',然后是两个下划线。更新了我的答案,对于
csv.reader
返回的对象,这实际上是一种错误的跳过方式。”
next
跳过一行,在本例中是第一行。