将特定信息从 CSV 插入 SQL python3

Posted

技术标签:

【中文标题】将特定信息从 CSV 插入 SQL python3【英文标题】:Inserting specific information from CSV to SQL python3 【发布时间】:2018-01-15 23:53:58 【问题描述】:

我在将信息从 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    

如果我要从插入命令中删除 VID 和名称并这样做:

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  

【问题讨论】:

第一行数据长什么样子? 你是指CSV中的行吗? 就是这个意思。 【参考方案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)

【讨论】:

很好,谢谢。我假设如果我想添加比我能做的更多的行“[vid, name] + row[8:13] + row[15:17]” 没问题,很高兴能帮上忙!应该这样做是的:)

以上是关于将特定信息从 CSV 插入 SQL python3的主要内容,如果未能解决你的问题,请参考以下文章

从 CSV 文件生成插入 SQL 语句

将 SQL 插入脚本转换为 CSV 格式

从 sql 文件或使用 csv 文件将数据插入 mysql

从 csv 文件批量插入 - 忽略有错误的行 - SQL Server

如何在将数据从 csv 复制到 sql 表时在目标表中插入 CurrentUserId 和 TenantId 字段

在 python3 中的 csv 文件的特定行之后添加新行