在 python sqlite3 模块中导入数据文件(如 .csv)的任何其他方式? 【不一一插入】

Posted

技术标签:

【中文标题】在 python sqlite3 模块中导入数据文件(如 .csv)的任何其他方式? 【不一一插入】【英文标题】:Any other way to import data files(like .csv) in python sqlite3 module ? [not insert one by one] 【发布时间】:2011-02-20 17:24:24 【问题描述】:

在 sqlite3 的客户端 CLI 中,有“.import file TABLE_name”来做。

但是,我目前不想在我的服务器上安装 sqlite3。

在 python sqlite3 模块中,我们可以创建和编辑数据库。

但是,我还没有找到将数据文件导入 TABLE 的方法, 除了逐行插入。

还有什么办法吗?

【问题讨论】:

【参考方案1】:

您可以使用executemany 命令一次性插入,而不是一个一个插入

假设我有带有以下内容的 users.csv

"Hugo","Boss"
"Calvin","Klein"

基本上用 csv 模块打开并将其传递给 .executemany 函数

import csv,sqlite3

persons= csv.reader(open("users.csv"))
con = sqlite3.connect(":memory:")

con.execute("create table person(firstname, lastname)")
con.executemany("insert into person(firstname, lastname) values (?, ?)", persons)

for row in con.execute("select firstname, lastname from person"):
    print row

#(u'Hugo', u'Boss')
#(u'Calvin', u'Klein')

【讨论】:

谢谢你,S.Mark。它非常有用。好像没有类似“.import”的功能? @cyaos:没有。顺便说一句,这个问题在 SO 中很受欢迎,例如:***.com/questions/2346074/… 还有一件事你应该知道的是 CLI 中的.import 相当原始:它只是在分隔符上拆分,当数据包含分隔符时会失败引用对应的值。

以上是关于在 python sqlite3 模块中导入数据文件(如 .csv)的任何其他方式? 【不一一插入】的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中导入模块的问题

在python中导入带参数的模块

python中pil如何导入?

在 Anaconda Python 中导入自己的模块

从内存中导入 Python 模块 [重复]

如何在 lambda 中导入 python 模块?