Python Psycopg2: insertando una array de strings

En este artículo, veremos los múltiples enfoques para insertar una array de strings en pyscopg2/Postgres en el lenguaje de programación python.

Método 1: método ingenuo

En este ejemplo, formamos una conexión a la base de datos del aula usando el método psycopg2.connect() , luego creamos un cursor usando el método conn.cursor() . Luego insertamos los valores de la lista directamente ejecutando el comando de inserción de SQL, usando el método execute() usando marcadores de posición %s. finalmente buscamos todas las filas usando el método fetchall() .

CSV utilizado:

Python3

# importing packages
import psycopg2
 
# forming connection
conn = psycopg2.connect(
    database="Classroom",
    user='postgres',
    password='sherlockedisi',
    host='127.0.0.1',
    port='5432'
)
 
conn.autocommit = True
 
# creating a cursor
cursor = conn.cursor()
 
# list of rows to be inserted
values = [17, 'samuel', 95]
 
# executing the sql statement
cursor.execute("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)
 
# committing changes
conn.commit()
 
# closing connection
conn.close()

Producción: 

Antes de insertar:

Después de insertar:

Método 2: insertar arrays a través del diccionario

Podemos insertar una array de strings almacenándolas en un diccionario. El diccionario se puede actualizar aún más en la tabla que creamos o en una tabla que ya existe. en este ejemplo, usamos el método to_sql( ).

Usamos el método to_sql() para insertar un marco de datos de pandas en nuestra tabla de base de datos.

Sintaxis de to_sql:

df.to_sql(‘data’, con=conn, if_exists=’replace’, index=False)

Argumentos:

  • Datos: Nombre de la tabla
  • contra: conexión
  • if_exists: si la tabla ya existe la función que queremos aplicar. ej: ‘agregar’ nos ayuda a agregar datos en lugar de reemplazarlos.
  • índice: verdadero o falso

Python3

# import packages
import psycopg2
import pandas as pd
from sqlalchemy import create_engine
 
 
# creating a connection
conn_string = 'postgres://postgres:sherlockedisi@127.0.0.1/data1'
 
db = create_engine(conn_string)
conn = db.connect()
 
#creating a table
sql = '''CREATE TABLE details(Name char(20),
         Age int);'''
 
 
# initialise data of lists.
data = {'Name':['sam', 'richie', 'harry'],
        'Age':[18, 20, 19]}
 
# Create DataFrame
df = pd.DataFrame(data)
df.to_sql('data', con=conn, if_exists='replace', index=False)
conn = psycopg2.connect(conn_string
                        )
conn.autocommit = True
cursor = conn.cursor()
 
# fetching data
sql1='''select * from data;'''
cursor.execute(sql1)
for i in cursor.fetchall():
    print(i)
 
# conn.commit()
conn.close()

Producción:

('sam', 18)
('richie', 20)
('harry', 19)

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 *