Dengan "Data baru adalah daftar x kolom", saya membayangkan maksud Anda x
tupel , sejak itu Anda terus berbicara tentang "tupel pertama". Jika Newdata
adalah daftar tupel, y = len(Newdata[0])
adalah jumlah item dalam tupel pertama.
Dengan asumsi itu nomor yang Anda inginkan (dan semua tupel sebaiknya memiliki jumlah item yang sama, jika tidak executemany
akan gagal!), ide umum dalam jawaban @Nathan adalah benar:buat string dengan jumlah tanda tanya yang dipisahkan koma yang sesuai:
holders = ','.join('?' * y)
kemudian masukkan ke dalam sisa pernyataan SQL. Cara @Nathan untuk menyisipkan tepat untuk sebagian besar versi Python 2.any, tetapi jika Anda memiliki 2.6 atau lebih baik,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)
saat ini lebih disukai (juga berfungsi di Python 3.any).
Akhirnya,
csr.executemany(sql, Newdata)
akan melakukan apa yang Anda inginkan. Ingatlah untuk melakukan transaksi setelah Anda selesai!-)