Python PostgreSQL - Insertar datos

Puede insertar un registro en una tabla existente en PostgreSQL usando el INSERT INTOdeclaración. Al ejecutar esto, debe especificar el nombre de la tabla y los valores de las columnas en ella.

Sintaxis

A continuación se muestra la sintaxis recomendada de la instrucción INSERT:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);

Donde, columna1, columna2, columna3, .. son los nombres de las columnas de una tabla, y valor1, valor2, valor3, ... son los valores que necesita insertar en la tabla.

Ejemplo

Suponga que hemos creado una tabla con el nombre CRICKETERS usando la declaración CREATE TABLE como se muestra a continuación:

postgres=# CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age INT,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
CREATE TABLE
postgres=#

La siguiente declaración de PostgreSQL inserta una fila en la tabla creada anteriormente:

postgres=# insert into CRICKETERS (
   First_Name, Last_Name, Age, Place_Of_Birth, Country) 
   values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=#

Al insertar registros usando la instrucción INSERT INTO , si omite los nombres de las columnas, el registro se insertará dejando espacios vacíos en las columnas que ha omitido.

postgres=# insert into CRICKETERS (First_Name, Last_Name, Country) 
   values('Jonathan', 'Trott', 'SouthAfrica');
INSERT 0 1

También puede insertar registros en una tabla sin especificar los nombres de las columnas, si el orden de los valores que pasa es el mismo que el de sus respectivos nombres de columna en la tabla.

postgres=# insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
INSERT 0 1
postgres=# insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
INSERT 0 1
postgres=#

Después de insertar los registros en una tabla, puede verificar su contenido utilizando la instrucción SELECT como se muestra a continuación:

postgres=# SELECT * from CRICKETERS;
first_name  | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Shikhar     | Dhawan     | 33  | Delhi          | India
Jonathan    | Trott      |     |                | SouthAfrica
Kumara      | Sangakkara | 41  | Matale         | Srilanka
Virat       | Kohli      | 30  | Delhi          | India
Rohit       | Sharma     | 32  | Nagpur         | India
(5 rows)

Insertar datos usando Python

La clase de cursor de psycopg2 proporciona un método con el nombre método execute (). Este método acepta la consulta como parámetro y la ejecuta.

Por lo tanto, para insertar datos en una tabla en PostgreSQL usando python:

  • Importar psycopg2 paquete.

  • Cree un objeto de conexión utilizando el connect() método, pasando el nombre de usuario, contraseña, host (predeterminado opcional: localhost) y base de datos (opcional) como parámetros.

  • Desactive el modo de confirmación automática estableciendo falso como valor para el atributo autocommit.

  • los cursor() método del ConnectionLa clase de la biblioteca psycopg2 devuelve un objeto cursor. Cree un objeto de cursor utilizando este método.

  • Luego, ejecute las declaraciones INSERT pasándolas como un parámetro al método execute ().

Ejemplo

El siguiente programa de Python crea una tabla con el nombre EMPLOYEE en la base de datos PostgreSQL e inserta registros en ella usando el método execute () -

import psycopg2

#Establishing the connection
conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)
#Setting auto commit false
conn.autocommit = True

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

# Preparing SQL queries to INSERT a record into the database.
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX,
   INCOME) VALUES ('Ramya', 'Rama priya', 27, 'F', 9000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX,
   INCOME) VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX,
   INCOME) VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX,
   INCOME) VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX,
   INCOME) VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')

# Commit your changes in the database
conn.commit()
print("Records inserted........")

# Closing the connection
conn.close()

Salida

Records inserted........