Cómo acelerar la inserción masiva a MS SQL Server desde CSV usando pyodbc

A continuación se muestra mi código con el que me gustaría recibir ayuda. Tengo que ejecutarlo más de 1,300,000 filas, lo que significa que toma hasta40 minutos para insertar ~ 300,000 filas.

Me imagino que la inserción masiva es la ruta a seguir para acelerarlo. ¿O es porque estoy iterando sobre las filas a través defor data in reader: ¿parte?

#Opens the prepped csv file
with open (os.path.join(newpath,outfile), 'r') as f:
    #hooks csv reader to file
    reader = csv.reader(f)
    #pulls out the columns (which match the SQL table)
    columns = next(reader)
    #trims any extra spaces
    columns = [x.strip(' ') for x in columns]
    #starts SQL statement
    query = 'bulk insert into SpikeData123({0}) values ({1})'
    #puts column names in SQL query 'query'
    query = query.format(','.join(columns), ','.join('?' * len(columns)))

    print 'Query is: %s' % query
    #starts curser from cnxn (which works)
    cursor = cnxn.cursor()
    #uploads everything by row
    for data in reader:
        cursor.execute(query, data)
        cursor.commit()

Estoy eligiendo dinámicamente mis encabezados de columna a propósito (ya que me gustaría crear el código más pitónico posible).

SpikeData123 es el nombre de la tabla.

Respuestas a la pregunta(3)

Su respuesta a la pregunta