sql >> Base de Datos >  >> RDS >> Mysql

Usando Python, inserte rápidamente muchas columnas en Sqlite\Mysql

Por "Newdata es una lista de x columnas", imagino que te refieres a x tuplas , desde entonces sigues hablando de "la primera tupla". Si Newdata es una lista de tuplas, y = len(Newdata[0]) es el número de elementos en la primera de esas tuplas.

Suponiendo que ese es el número que desea (y todas las tuplas deberían tener la misma cantidad de elementos, de lo contrario executemany voluntad ¡falla!), la idea general en la respuesta de @Nathan es correcta:construye la cadena con el número apropiado de signos de interrogación separados por comas:

holders = ','.join('?' * y)

luego insértelo en el resto de la instrucción SQL. La forma de inserción de @Nathan es adecuada para la mayoría de las versiones de Python 2.cualquier versión, pero si tiene 2.6 o superior,

sql = 'INSERT INTO testdata VALUES({0})'.format(holders)

actualmente se prefiere (también funciona en Python 3.any).

Finalmente,

csr.executemany(sql, Newdata)

hará lo que desees. ¡Recuerde confirmar la transacción una vez que haya terminado!-)