0

パラメーターが 1 つだけの挿入ステートメントがあります

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 が iterable をサポートしているわけではなく、代わりに長さのあるものが渡されることを期待している可能性があります。

于 2013-05-11T12:27:37.150 に答える