Python PostgreSQL - Chèn dữ liệu

Bạn có thể chèn bản ghi vào một bảng hiện có trong PostgreSQL bằng cách sử dụng INSERT INTOtuyên bố. Trong khi thực hiện điều này, bạn cần chỉ định tên của bảng và giá trị cho các cột trong đó.

Cú pháp

Sau đây là cú pháp được khuyến nghị của câu lệnh INSERT:

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

Trong đó, column1, column2, column3, .. là tên của các cột trong bảng và value1, value2, value3, ... là các giá trị bạn cần chèn vào bảng.

Thí dụ

Giả sử chúng ta đã tạo một bảng với tên CRICKETERS bằng cách sử dụng câu lệnh CREATE TABLE như hình dưới đây -

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

Sau câu lệnh PostgreSQL chèn một hàng trong bảng đã tạo ở trên:

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

Trong khi chèn bản ghi bằng câu lệnh INSERT INTO, nếu bạn bỏ qua bất kỳ cột nào, tên cột Bản ghi sẽ được chèn để lại khoảng trống tại các cột mà bạn đã bỏ qua.

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

Bạn cũng có thể chèn các bản ghi vào bảng mà không cần chỉ định tên cột, nếu thứ tự của các giá trị bạn chuyển giống với tên cột tương ứng của chúng trong bảng.

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

Sau khi chèn các bản ghi vào một bảng, bạn có thể xác minh nội dung của nó bằng cách sử dụng câu lệnh SELECT như hình dưới đây:

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)

Chèn dữ liệu bằng Python

Lớp con trỏ của psycopg2 cung cấp một phương thức có tên là phương thức execute (). Phương thức này chấp nhận truy vấn như một tham số và thực thi nó.

Do đó, để chèn dữ liệu vào bảng trong PostgreSQL bằng python -

  • Nhập khẩu psycopg2 gói hàng.

  • Tạo một đối tượng kết nối bằng cách sử dụng connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ lưu trữ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.

  • Tắt chế độ cam kết tự động bằng cách đặt giá trị false thành thuộc tính autocommit.

  • Các cursor() phương pháp của Connectionlớp của thư viện psycopg2 trả về một đối tượng con trỏ. Tạo một đối tượng con trỏ bằng phương pháp này ..

  • Sau đó, thực thi (các) câu lệnh INSERT bằng cách chuyển nó / chúng làm tham số cho phương thức execute ().

Thí dụ

Chương trình Python sau tạo một bảng với tên EMPLOYEE trong cơ sở dữ liệu PostgreSQL và chèn các bản ghi vào đó bằng phương thức 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()

Đầu ra

Records inserted........