En este artículo vamos a ver cómo insertar un diccionario de Python en PostgreSQL usando Psycopg2.
Podemos insertar un diccionario de python tomando las claves del diccionario como nombres de columna y los valores como valores de diccionario. Importamos el paquete Psycopg2 y formamos una conexión a la base de datos PostgreSQL usando el método psycopg2.connect() . Primero, creemos una tabla y luego insertemos los valores del diccionario de Python en ella. Creamos la tabla ejecutando la declaración SQL usando el método cursor.execute() .
Comando SQL para crear una tabla:
'''CREATE TABLE DETAILS(employee_id int NOT NULL, employee_name char(20), employee_email varchar(30), employee_salary float);'''
Después de crear una tabla vacía, los valores de la tabla se toman del diccionario mediante el método .values() .
Recorremos los valores del diccionario y los insertamos en la tabla. La siguiente instrucción SQL se ejecuta para cada inserción.
'''insert into DETAILS(employee_id , employee_name , employee_email , employee_salary) VALUES{};'''
A continuación se muestra la implementación:
Python3
import psycopg2 # connection establishment conn = psycopg2.connect( database="geeks", user='postgres', password='root', host='localhost', port= '5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''CREATE TABLE DETAILS(employee_id int NOT NULL,\ employee_name char(20), employee_email varchar(30), employee_salary float);''' cursor.execute(sql) dictionary ={ 'empl1' : (187643,'sarah', 'sarahpaul@gmail.com',65000), 'empl2' : (187644,'rahul', 'rahul101@gmail.com',75000), 'empl3' : (187645,'arjun', 'arjun234@gmail.com',70000) } columns= dictionary.keys() for i in dictionary.values(): sql2='''insert into DETAILS(employee_id , employee_name , employee_email , employee_salary) VALUES{};'''.format(i) cursor.execute(sql2) sql3='''select * from DETAILS;''' cursor.execute(sql3) for i in cursor.fetchall(): print(i) conn.commit() conn.close()
Producción:
(187643, 'sarah ', 'sarahpaul@gmail.com', 65000.0) (187644, 'rahul ', 'rahul101@gmail.com', 75000.0) (187645, 'arjun ', 'arjun234@gmail.com', 70000.0)
Tabla PostgreSQL después de la inserción:
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA