【发布时间】:2016-11-03 05:19:33
【问题描述】:
我有一个 CSV 文件,看起来像这样:
Date,Person,Time Out,Time Back,Restaurant,Calories,Delicious?
6/20/2016,August,11:58,12:45,Black Bear,850,Y
6/20/2016,Marcellus,12:00,12:30,Brought Lunch,,Y
6/20/2016,Jessica,11:30,12:30,Wendy's,815,N
6/21/2016,August,12:05,1:01,Brought Lunch,,Y
到目前为止,我已经设法将每一行打印到一个字符串列表中(例如 - ['Date', 'Person', 'Time Out', etc.] or ['6/20/2016', 'August', '11:58' etc.])。
现在我还需要做两件事:
- 为每一行添加一个 ID 标题和连续的数字字符串(例如 -
['ID', 'Date', 'Person', etc.] and ['1', '6/20/2016', 'August', etc.]) - 分隔每一行,以便将它们格式化为插入
语句,而不是让程序一个接一个地打印出每一行(例如 -
INSERT INTO Table ['ID', 'Date', 'Person', etc.] VALUES ['1', '6/20/2016', 'August', etc.])
这是我现在的代码:
import csv
openFile = open('test.csv', 'r')
csvFile = csv.reader(openFile)
for row in csvFile:
print (row)
openFile.close()
【问题讨论】:
-
你的SQL表中的ID列是主键吗?如果是这样,您可以依赖 SQL 的 auto_increment 属性而忽略插入查询中的 ID 列。
-
为什么不用MySQL内置的
LOAD DATA INFILE直接从CSV文件加载到数据库,而不是用Python解析呢? -
@Mumpo,是的。我对 MySQL 不是很熟悉,所以我不知道这是一个选项,但似乎比我上面列出的更可行。感谢您的提示。
-
@Barmar,主要是因为在将文件插入 MySQL 之前,我还想对文件做一些其他的事情,并认为首先搞砸它不会太难。但是,如果 ti 不起作用,那绝对是一种选择。谢谢你把它放在那里。
标签: python mysql python-3.x csv sql-insert