小编Yon*_*ona的帖子

APSW(或 SQLite3)在 executemany 上插入非常慢

插入行时,我发现 APSW(Python 的 SQLite 解析器)存在以下问题。

假设我的数据是 data = [[1,2],[3,4]]

APSW 和 SQLite3 允许我执行以下操作:

apsw.executemany("INSERT INTO Table VALUES(?,?)", b)
Run Code Online (Sandbox Code Playgroud)

或者我可以编写一些代码来执行以下操作:

sql = "BEGIN TRANSACTION; 
INSERT INTO Table Values('1','2');
INERT INTO Table Values('3','4');
COMMINT;"

apsw.execute(sql)
Run Code Online (Sandbox Code Playgroud)

data是一个长列表/数组/表时,第一种方法的性能与第二种方法相比非常慢(对于 400 行,它可以是 20 秒,而小于 1!)。我不明白为什么会这样,因为这是所有 SQLite Python 教程中显示的将数据添加到表中的方法。

知道这里可能发生什么吗?

python sqlite apsw

3
推荐指数
2
解决办法
3287
查看次数

xlwings 使用 api.autofill 如何传递范围作为 range.autofill 方法的参数

我可以使用 VBA 和 range.autofill 方法轻松地在 Excel 上用公式填充列:

Range("A2").AutoFill Destination:=Range("A2:A10"), Type:=xlFillDefault
Run Code Online (Sandbox Code Playgroud)

这将采用单元格 A2(或范围)上的公式/内容并将其扩展到 A10。

查看 MSDN 帮助我看到:https ://msdn.microsoft.com/en-us/library/office/ff195345.aspx

以及:https ://msdn.microsoft.com/en-us/library/office/ff838605.aspx

在 xlwings 上我可以这样做:

import xlwings as xw
rp = xw.Book(myFile)
rp.sheets('mySheet').range('A2').api.autofill(range, 0)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过range。我不能简单地输入“A2:A10”,我需要传递一个范围对象。

我试图这样做:rp.sheets('mySheet').range('A2').api.autofill(rp.sheets('mySheet').range('A2:A10'), 0)但这简直让Python崩溃了!

有任何想法吗?谢谢!

python xlwings

1
推荐指数
1
解决办法
3180
查看次数

标签 统计

python ×2

apsw ×1

sqlite ×1

xlwings ×1