0

我有一个只有一个参数的插入语句

INSERT OR IGNORE INTO sample (descr) VALUES (?);

我有一个元组列表

[(a,b), (c,d)]

现在我正在使用

cur.executemany(query, listOfTuples)

Python 不喜欢接收 2 个参数,只需要 1 个。用这个语句绑定元组中所有第一个值的最佳方法是什么?

我试过类似的东西

cur.executemany(query, listOfTuples[0])

但现在 Python 认为我给了它 4 个参数。

4

1 回答 1

1

使用列表推导仅选择第一个值;使用切片创建长度为 1 的新元组:

cur.executemany(query, [t[:1] for t in listOfTuples])

快速演示以显示列表理解的结果:

>>> listOfTuples = [('a', 'b'), ('c', 'd')]
>>> [t[:1] for t in listOfTuples]
[('a',), ('c',)]

您还可以使用生成器表达式,它动态创建元组切片:

cur.executemany(query, (t[:1] for t in listOfTuples))

可能不是所有的数据库 API 都支持可迭代的,而是希望得到一些有长度的东西。

于 2013-05-11T12:27:37.150 回答