una nueva insertar filas fila data crear columnas columna agregar python mysql mysql-python

insertar - crear nueva columna python



Cómo usar mysqldb de Python para insertar muchas filas a la vez (2)

De la Guía del usuario de MySQLdb :

c.executemany( """INSERT INTO breakfast (name, spam, eggs, sausage, price) VALUES (%s, %s, %s, %s, %s)""", [ ("Spam and Sausage Lover''s Plate", 5, 1, 8, 7.95 ), ("Not So Much Spam Plate", 3, 2, 0, 3.95 ), ("Don''t Wany ANY SPAM! Plate", 0, 4, 3, 5.95 ) ] )

así que en tu caso:

c.executemany("insert into T (F1,F2) values (%s, %s)", [(''a'',''b''),(''c'',''d'')])

Tengo una lista de listas, por ejemplo [[''a'',''b''],[''c'',''d'']] .

Tengo una tabla llamada T y dos campos F1 , F2 . El primer elemento en la lista de campos se asigna a F1 , segundo a F2 .

¿Cómo puedo insertar filas para cada lista interna en un solo comando o llamada, en lugar de usar un bucle for como este?

for i in [[''a'',''b''],[''c'',''d'']]: c.execute("insert into T (F1,F2) values (%s, %s)", (i[0], i[1]))


Es posible insertar todas las filas en una sola declaración como @adamhajari, y evitar inyecciones de sql como @zenpoy, al mismo tiempo. Solo necesita crear una declaración de inserción grande y dejar que mysqldb''s execute el formateo.

values_to_insert = [(''a'',''b''),(''c'',''d'')] query = "INSERT INTO T (F1, F2) VALUES " + ",".join("(%s, %s)" for _ in values_to_insert) flattened_values = [item for sublist in values_to_insert for item in sublist] c.execute(query, flattened_values)

No es super legible, pero puede ser un poco más rápido que la ejecución (intenté insertar lotes de 50000 filas en una base de datos local, la ejecución fue 20% más lenta).