有没有其他方法在python sqlite3模块中导入数据文件(如.csv)?[不是逐个插入]

5 投票
1 回答
3866 浏览
提问于 2025-04-15 22:50

在sqlite3的客户端命令行中,有一个命令是“ .import file TABLE_name ”可以用来导入数据。

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

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

不过,我还没有找到其他方法可以将数据文件导入到一个表里,除了一个一个地插入行。

有没有其他的方法呢?

1 个回答

7

你可以使用 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')

撰写回答