Python Psycopg2: inserta varias filas con una consulta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *