2011-04-11 16 views

Respuesta

31
http://docs.python.org/library/sqlite3.html#cursor-objects 

bibliotecas de Python SQLite no han preparado los objetos Statement, pero sí permitirá utilizar consultas con parámetros, y para proporcionar más de un conjunto de parámetros.

Editar: Un ejemplo de executemany como solicitada:

values_to_insert = [(1,"foo"), (2, "bar"), (3, "baz")] 

cursor.executemany(""" 
    INSERT INTO some_table ('item_num', 'item_name') 
    VALUES (?, ?)""", values_to_insert) 
+0

@Amber: gracias por su respuesta. Me había perdido un punto importante, es decir, era la inserción de registros MÚLTIPLES .. "execute()" permite que solo se ejecute una consulta ... por lo que no funcionará para mí :) –

+2

@mahendraliya por lo que '.executemany()' existe: http://docs.python.org/library/sqlite3.html#sqlite3.Cursor.executemany – Amber

+0

@Amber: pasé por executemany() pero lamento decir que soy bastante nuevo en python y sqlite. Mi duda es como si tuviera, digamos una lista de nombres de archivos que preparé agregando valores dentro de un objeto de lista, entonces ¿cómo puedo usarlo con executeMany ... es como simplemente pasar el objeto list (decir fileList) a executemany ()? ... Cualquier fragmento de código sería muy apreciado ... gracias. –

5

Puede utilizar executemany() y pasar un objeto iterador, por ejemplo para insertar 100 enteros y sus cuadrados:

def my_iter(x): 
    for i in range(x): 
     yield i, i*i 

cursor.executemany("INSERT INTO my_table VALUES (?, ?)", my_iter(100)) 
-3

Si está intentando insertar una sola fila como con un PreparedStatement,

cursor.execute("""INSERT INTO table_name ('column1', 'column2') VALUES (?, ?)""", ("value1", "value2")) 

debería funcionar también. Los valores se pasan como tuplas de pitón.

+1

El OP preguntó sobre la inserción de múltiples registros/filas, no una sola fila, por lo que no veo cómo esto responde la pregunta. – Moot

Cuestiones relacionadas