Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando Python insira rapidamente muitas colunas em SQLite\Mysql


Por "Newdata is list of x columns", imagino que você queira dizer x tuplas , desde então você continua falando da "primeira tupla". Se Newdata é uma lista de tuplas, y = len(Newdata[0]) é o número de itens na primeira dessas tuplas.

Supondo que seja o número que você deseja (e todas as tuplas devem ter o mesmo número de itens, caso contrário executemany vai falha!), a ideia geral na resposta de @Nathan está certa:construa a string com o número apropriado de pontos de interrogação separados por vírgula:
holders = ','.join('?' * y)

em seguida, insira-o no restante da instrução SQL. A maneira de inserir do @Nathan é correta para a maioria das versões do Python 2.any, mas se você tiver 2.6 ou melhor,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)

é atualmente preferido (também funciona em Python 3.any).

Finalmente,
csr.executemany(sql, Newdata)

vai fazer o que você deseja. Lembre-se de confirmar a transação assim que terminar!-)