Python+;SQLite:元组的绑定列表

Python+;SQLite:元组的绑定列表,python,sqlite,list,python-3.x,tuples,Python,Sqlite,List,Python 3.x,Tuples,我有一个只有一个参数的insert语句 INSERT OR IGNORE INTO sample (descr) VALUES (?); 我有一个元组列表 [(a,b), (c,d)] 现在我正在使用 cur.executemany(query, listOfTuples) Python不喜欢接收2个参数,只需要1个。 用此语句绑定元组中所有第一个值的最佳方法是什么? 我试过类似的方法 cur.executemany(query, listOfTuples[0]) 但是现在Python认

我有一个只有一个参数的insert语句

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个参数。

使用列表理解只选择第一个值;使用切片创建长度为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都支持iterable,而是希望得到有长度的东西。

就这么简单。。。这会在内存中创建新变量吗?或者这是listOfTuples上的内存引用。@特伦斯:它创建一个新列表和新元组。您可能也可以使用生成器表达式。