将特定信息从CSV插入到SQL python3中

时间:2017-08-08 12:02:20

标签: python sql python-3.x csv pymysql

我在将信息从CSV文件插入SQL DB时出现问题, 这是我正在使用的代码:

import csv 
import pymysql    

def sqlinsert(cur, vname, vid, file, db):                                                                 
    insertcsv = '''INSERT INTO `mydb`(VID,name,starttime,stoptime,sessiontime,calledstation,sessionbill)
                VALUES(%s, %s, %s, %s, %s, %s, %s)'''                                                                                                                                        
    with open(os.path.join(cwd, 'RawCSV', file), 'r') as f:                                               
        reader = csv.reader(f, delimiter='\t')                                                            
        next(reader)    # skipping the first line                                                                                  
        for row in reader:                                                                                
            cur.execute(insertcsv, (vid, vname, row[8:13]))                                                                                                               
            db.commit()                       

问题如下:

TypeError: not enough arguments for format string    

如果我将从insert命令中删除VID和name,并按照以下方式执行:

insertcsv = '''INSERT INTO `mydb (starttime,stoptime,sessiontime,calledstation,sessionbill) VALUES(%s, %s, %s, %s, %s)'''       
cur.execute(insertcsv, row[8:13])

这将导入没有问题,我在这里缺少什么?

这是CSV行:

7869574006      1443580239  478 -00000027   1499347553.39   231     2017-07-06  

1 个答案:

答案 0 :(得分:1)

1)修复你的缩进

2)(vid,vname,row [8:13])将是类型(t1,t2,[])的元组。  t1& t2是vid&的类型。 VNAME。

尝试使用:

row_to_insert = [vid, vname] + row[8:13]    # Appending the two lists.
cur.execute(insertcsv, row_to_insert)