質問

NewDataがX列のリストである場合、最初のタプルのメンバーの数は、数字の一意の列をどのように取得しますか。 (レンは重要ではありません。)「?」の数を変更します。列に一致し、以下のステートメントを使用して挿入します。

csr = con.cursor()
csr.execute('Truncate table test.data')
csr.executemany('INSERT INTO test.data VALUES (?,?,?,?)', Newdata)
con.commit()
役に立ちましたか?

解決

「NewDataはX列のリスト」であることを意味します、私はあなたが意味すると思います x タプル, 、それ以来、あなたは「最初のタプル」について話し続けます。もしも Newdata タプルのリストです、 y = len(Newdata[0]) これらのタプルの最初の1つのアイテムの数です。

それがあなたが望む番号だと仮定すると(そして、すべてのタプルは同じ数のアイテムを持っている方が良いです。 executemany 意思 失敗!)、 @Nathanの答えの一般的なアイデアは正しいです。

holders = ','.join('?' * y)

次に、SQLステートメントの残りの部分に挿入します。 @Nathanの挿入方法は、ほとんどのPython 2. Anyバージョンに適していますが、2.6以上がある場合は、

sql = 'INSERT INTO testdata VALUES({0})'.format(holders)

現在好まれています(Python 3.Anyでも動作します)。

ついに、

csr.executemany(sql, Newdata)

あなたが望むことをします。完了したら、トランザクションをコミットすることを忘れないでください!)

他のヒント

すべての要素の最大数のアイテムを探している場合 Newdata, 、それは単純です:

num_columns = max(len(t) for t in Newdata)

もちろん、これはPython 2.5以上を想定しています。

あなたがしようとしていることがうまくいくとは確信していませんが、挿入ステートメントは次のようになります。

sql = "test.data値(%s)"% "、"。Join( '?' * num_columns)に挿入

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top