Pod pojmem "Newdata je seznam x sloupců" máte na mysli x
n-tice , od té doby stále mluvíte o „první n-tice“. Pokud Newdata
je seznam n-tic, y = len(Newdata[0])
je počet položek v první z těchto n-tic.
Za předpokladu, že to je požadovaný počet (a všechny n-tice by měly mít stejný počet položek, jinak executemany
bude selhat!), obecná myšlenka v odpovědi @Nathana je správná:vytvořte řetězec s příslušným počtem otazníků oddělených čárkou:
holders = ','.join('?' * y)
poté jej vložte do zbytku příkazu SQL. @Nathanův způsob vkládání je správný pro většinu verzí Pythonu 2.any, ale pokud máte 2.6 nebo lepší,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)
je aktuálně preferováno (funguje také v Pythonu 3.any).
Konečně,
csr.executemany(sql, Newdata)
udělá, co si přeješ. Jakmile budete hotovi, nezapomeňte transakci potvrdit!-)