Python PostgreSQL - Insérer des données

Vous pouvez insérer un enregistrement dans une table existante dans PostgreSQL en utilisant le INSERT INTOdéclaration. Lors de son exécution, vous devez spécifier le nom de la table et les valeurs des colonnes qu'elle contient.

Syntaxe

Voici la syntaxe recommandée de l'instruction INSERT -

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

Où, colonne1, colonne2, colonne3, .. sont les noms des colonnes d'une table et valeur1, valeur2, valeur3, ... sont les valeurs que vous devez insérer dans la table.

Exemple

Supposons que nous ayons créé une table avec le nom CRICKETERS en utilisant l'instruction CREATE TABLE comme indiqué ci-dessous -

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=#

L'instruction PostgreSQL suivante insère une ligne dans la table créée ci-dessus -

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

Lors de l'insertion d'enregistrements à l'aide de l'instruction INSERT INTO, si vous ignorez les noms de colonnes, l'enregistrement sera inséré en laissant des espaces vides dans les colonnes que vous avez ignorées.

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

Vous pouvez également insérer des enregistrements dans une table sans spécifier les noms de colonne, si l'ordre des valeurs que vous passez est le même que leurs noms de colonne respectifs dans la table.

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=#

Après avoir inséré les enregistrements dans une table, vous pouvez vérifier son contenu à l'aide de l'instruction SELECT comme indiqué ci-dessous -

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)

Insertion de données à l'aide de Python

La classe de curseur de psycopg2 fournit une méthode avec le nom de méthode execute (). Cette méthode accepte la requête en tant que paramètre et l'exécute.

Par conséquent, pour insérer des données dans une table dans PostgreSQL en utilisant python -

  • Importer psycopg2 paquet.

  • Créez un objet de connexion à l'aide de connect() méthode, en lui passant le nom d'utilisateur, le mot de passe, l'hôte (par défaut facultatif: localhost) et la base de données (facultatif) en tant que paramètres.

  • Désactivez le mode de validation automatique en définissant false comme valeur de l'attribut autocommit.

  • le cursor() méthode de la ConnectionLa classe de la bibliothèque psycopg2 renvoie un objet curseur. Créez un objet curseur à l'aide de cette méthode.

  • Ensuite, exécutez la ou les instructions INSERT en les passant en tant que paramètre à la méthode execute ().

Exemple

Le programme Python suivant crée une table avec le nom EMPLOYEE dans la base de données PostgreSQL et y insère des enregistrements à l'aide de la méthode 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()

Production

Records inserted........