Python PostgreSQL - Inserisci dati
Puoi inserire record in una tabella esistente in PostgreSQL usando il INSERT INTOdichiarazione. Durante l'esecuzione, è necessario specificare il nome della tabella e i valori per le colonne in essa contenute.
Sintassi
Di seguito è riportata la sintassi consigliata dell'istruzione INSERT:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
Dove, colonna1, colonna2, colonna3, .. sono i nomi delle colonne di una tabella e valore1, valore2, valore3, ... sono i valori che devi inserire nella tabella.
Esempio
Supponiamo di aver creato una tabella con il nome CRICKETERS utilizzando l'istruzione CREATE TABLE come mostrato di seguito -
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 seguente istruzione PostgreSQL inserisce una riga nella tabella creata sopra -
postgres=# insert into CRICKETERS (
First_Name, Last_Name, Age, Place_Of_Birth, Country)
values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=#
Durante l'inserimento di record utilizzando l' istruzione INSERT INTO , se si salta qualsiasi nome di colonna, il record verrà inserito lasciando spazi vuoti nelle colonne che sono state ignorate.
postgres=# insert into CRICKETERS (First_Name, Last_Name, Country)
values('Jonathan', 'Trott', 'SouthAfrica');
INSERT 0 1
Puoi anche inserire record in una tabella senza specificare i nomi delle colonne, se l'ordine dei valori passati è lo stesso dei rispettivi nomi delle colonne nella tabella.
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=#
Dopo aver inserito i record in una tabella è possibile verificarne il contenuto utilizzando l'istruzione SELECT come mostrato di seguito -
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)
Inserimento di dati utilizzando Python
La classe del cursore di psycopg2 fornisce un metodo con nome metodo execute (). Questo metodo accetta la query come parametro e la esegue.
Pertanto, per inserire dati in una tabella in PostgreSQL usando python -
Importare psycopg2 pacchetto.
Crea un oggetto connessione usando il connect() , passando il nome utente, la password, l'host (predefinito opzionale: localhost) e il database (opzionale) come parametri ad esso.
Disattiva la modalità di commit automatico impostando false come valore nell'attributo autocommit.
Il cursor() metodo del Connectionclass della libreria psycopg2 restituisce un oggetto cursore. Crea un oggetto cursore usando questo metodo.
Quindi, esegui le istruzioni INSERT passandole come parametro al metodo execute ().
Esempio
Il seguente programma Python crea una tabella con il nome EMPLOYEE nel database PostgreSQL e inserisce i record al suo interno usando il metodo 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()
Produzione
Records inserted........