Под „Newdata е списък от x колони“, предполагам, че имате предвид x
кортелки , оттогава продължавате да говорите за "първия кортеж". Ако Newdata
е списък с кортежи, y = len(Newdata[0])
е броят на елементите в първия от тези кортежи.
Ако приемем, че това е числото, което искате (и всички кортежи е по-добре да имат същия брой елементи, в противен случай executemany
ще неуспешно!), общата идея в отговора на @Nathan е правилна:изградете низа с подходящия брой въпроси, разделени със запетая:
holders = ','.join('?' * y)
след това го вмъкнете в останалата част от SQL израза. Начинът на @Nathan за вмъкване е правилен за повечето Python 2.всякакви версии, но ако имате 2.6 или по-добра,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)
в момента се предпочита (работи и в Python 3.any).
И накрая,
csr.executemany(sql, Newdata)
ще направи това, което желаете. Не забравяйте да извършите транзакцията, след като приключите!-)