Este artículo trata sobre la inserción de varias filas en nuestra tabla de una base de datos específica con una consulta. Hay varias formas de ejecutar esta tarea, veamos cómo podemos hacerlo desde los enfoques a continuación.
Método 1: Inserción de valores a través del método Naive
En este método, importamos el paquete psycopg2 y formamos una conexión usando el método psycopg2.connect() , nos conectamos a la base de datos ‘Classroom’. después de formar una conexión creamos un cursor usando el método connect().cursor(), nos ayudará a buscar filas. después de eso, ejecutamos la instrucción insert SQL, que tiene la forma:
insertar en table_name (columna1, columna2, …. columna_n) valores (…) (…) (…) ;
La instrucción SQL se ejecuta mediante el método cursor.execute() . buscamos filas usando el método cursor.fetchall() .
CSV utilizado:
Ejemplo:
Python3
# importing packages import psycopg2 # forming connection conn = psycopg2.connect( database="Classroom", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True # creating a cursor cursor = conn.cursor() # sql statement to be executed sql = '''insert into classroom(enrollment_no, name , science_marks) values(12, 'sarah', 90),(13,'Ray',81); ''' # executing the sql statement cursor.execute(sql) # select statement to display output sql1 = '''select * from classroom;''' # executing sql statement cursor.execute(sql1) # fetching rows for i in cursor.fetchall(): print(i) # committing changes conn.commit() # closing connection conn.close()
Producción:
Salida en Python:
(4, 'Linnett', 79) (5, 'Jayden', 45) (6, 'Sam', 63) (7, 'Zooey', 82) (8, 'Robb', 97) (9, 'Jon', 38) (10, 'Sansa', 54) (11, 'Arya', 78) (12, 'sarah', 90) (13, 'Ray', 81)
Método 2: Insertar valores a través de cursor.mogrify()
El código es el mismo que el del ejemplo anterior, pero la diferencia es el método cursor.mogrify().
método cursor.mogrify():
Después de vincular los argumentos, devuelve una string de consulta. La string devuelta es la misma que se enviaría a la base de datos si usara el método execute() o algo similar. La string que se devuelve siempre es una string de bytes y es más rápida que el método executemany().
Sintaxis:
cur.mogrify(“INSERTAR EN LA PRUEBA (col) VALORES (%s, %s….)”, (val1, val2,…)(……))
cursor.mogrify() devuelve una string de bytes, pero queremos que esté en formato de string, por lo que solo necesitamos decodificar el resultado de mogrify de nuevo a una string usando el truco decode(‘utf-8’).
Ejemplo:
Python3
# importing packages import psycopg2 # forming connection conn = psycopg2.connect( database="Classroom", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True # creating a cursor cursor = conn.cursor() # list of rows to be inserted values = [(14, 'Ian', 78), (15, 'John', 88), (16, 'Peter', 92)] # cursor.mogrify() to insert multiple values args = ','.join(cursor.mogrify("(%s,%s,%s)", i).decode('utf-8') for i in values) # executing the sql statement cursor.execute("INSERT INTO classroom VALUES " + (args)) # select statement to display output sql1 = '''select * from classroom;''' # executing sql statement cursor.execute(sql1) # fetching rows for i in cursor.fetchall(): print(i) # commiting changes conn.commit() # closing connection conn.close()
Producción:
Método 3: Insertar valores a través del método executemany()
El enfoque de este ejemplo es el mismo que antes, pero en lugar de usar cursor.mogrify(), usamos el método cursor.executemany(). executemany() es más lento en comparación con el método mogrify().
ejecutar muchos():
Se utiliza para aplicar una acción de base de datos (consulta o comando) a todas las tuplas o asignaciones de parámetros en la secuencia de la lista de vars. La función es especialmente útil para las instrucciones de actualización de la base de datos porque descarta cualquier conjunto de resultados producido por la consulta. Los parámetros de la consulta están enlazados usando los mismos principios que la función ejecutar().
Sintaxis
ejecutar muchos (consulta, lista_variable)
Ejemplo:
Python3
# importing packages import psycopg2 # forming connection conn = psycopg2.connect( database="Classroom", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True # creating a cursor cursor = conn.cursor() # list of rows to be inserted values = [(17, 'rachel', 67), (18, 'ross', 79), (19, 'nick', 95)] # executing the sql statement cursor.executemany("INSERT INTO classroom VALUES(%s,%s,%s)", values) # select statement to display output sql1 = '''select * from classroom;''' # executing sql statement cursor.execute(sql1) # fetching rows for i in cursor.fetchall(): print(i) # commiting changes conn.commit() # closing connection conn.close()
Producción:
Publicación traducida automáticamente
Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA