pythonを使用して、sqlite mysqlに多くの列を挿入します
-
03-10-2019 - |
質問
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)に挿入
所属していません StackOverflow