Python PostgreSQL - คู่มือฉบับย่อ

PostgreSQL เป็นระบบฐานข้อมูลเชิงวัตถุสัมพันธ์แบบโอเพ่นซอร์สที่มีประสิทธิภาพ มีระยะการพัฒนาที่ใช้งานมานานกว่า 15 ปีและสถาปัตยกรรมที่ได้รับการพิสูจน์แล้วซึ่งได้รับชื่อเสียงอย่างมากในด้านความน่าเชื่อถือความสมบูรณ์ของข้อมูลและความถูกต้อง

ในการสื่อสารกับ PostgreSQL โดยใช้ Python คุณต้องติดตั้ง psycopg ซึ่งเป็นอะแดปเตอร์ที่จัดเตรียมไว้สำหรับการเขียนโปรแกรม python เวอร์ชันปัจจุบันคือ psycog2.

Psycopg2 ถูกเขียนขึ้นโดยมีจุดมุ่งหมายให้มีขนาดเล็กและรวดเร็วและมั่นคงเหมือนหิน สามารถใช้ได้ภายใต้ PIP (ตัวจัดการแพ็คเกจของ python)

การติดตั้ง Psycog2 โดยใช้ PIP

ก่อนอื่นตรวจสอบให้แน่ใจว่าได้ติดตั้ง python และ PIP ในระบบของคุณอย่างถูกต้องและ PIP เป็นข้อมูลล่าสุด

ในการอัปเกรด PIP ให้เปิดพรอมต์คำสั่งและดำเนินการคำสั่งต่อไปนี้ -

C:\Users\Tutorialspoint>python -m pip install --upgrade pip
Collecting pip
   Using cached 
https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl
Installing collected packages: pip
   Found existing installation: pip 19.0.3
      Uninstalling pip-19.0.3:
         Successfully uninstalled pip-19.0.3
Successfully installed pip-19.2.2

จากนั้นเปิดพรอมต์คำสั่งในโหมดผู้ดูแลระบบและเรียกใช้ไฟล์ pip install psycopg2-binary คำสั่งดังแสดงด้านล่าง -

C:\WINDOWS\system32>pip install psycopg2-binary
Collecting psycopg2-binary
   Using cached 
https://files.pythonhosted.org/packages/80/79/d0d13ce4c2f1addf4786f4a2ded802c2df66ddf3c1b1a982ed8d4cb9fc6d/psycopg2_binary-2.8.3-cp37-cp37m-win32.whl
Installing collected packages: psycopg2-binary
Successfully installed psycopg2-binary-2.8.3

การยืนยัน

ในการตรวจสอบการติดตั้งให้สร้างสคริปต์ python ตัวอย่างโดยมีบรรทัดต่อไปนี้อยู่ในนั้น

import mysql.connector

หากการติดตั้งสำเร็จเมื่อคุณดำเนินการคุณจะไม่ได้รับข้อผิดพลาดใด ๆ -

D:\Python_PostgreSQL>import psycopg2
D:\Python_PostgreSQL>

PostgreSQL มีเชลล์ของตัวเองเพื่อดำเนินการสืบค้น ในการสร้างการเชื่อมต่อกับฐานข้อมูล PostgreSQL ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งอย่างถูกต้องในระบบของคุณ เปิดพรอมต์เชลล์ PostgreSQL และส่งผ่านรายละเอียดเช่นเซิร์ฟเวอร์ฐานข้อมูลชื่อผู้ใช้และรหัสผ่าน หากรายละเอียดทั้งหมดที่คุณให้มาเหมาะสมการเชื่อมต่อจะถูกสร้างขึ้นกับฐานข้อมูล PostgreSQL

ในขณะที่ส่งรายละเอียดคุณสามารถไปกับเซิร์ฟเวอร์เริ่มต้นฐานข้อมูลพอร์ตและชื่อผู้ใช้ที่เชลล์แนะนำ

การสร้างการเชื่อมต่อโดยใช้ Python

คลาสการเชื่อมต่อของ psycopg2แสดง / จัดการอินสแตนซ์ของการเชื่อมต่อ คุณสามารถสร้างการเชื่อมต่อใหม่โดยใช้ไฟล์connect()ฟังก์ชัน สิ่งนี้ยอมรับพารามิเตอร์การเชื่อมต่อพื้นฐานเช่น dbname ผู้ใช้รหัสผ่านโฮสต์พอร์ตและส่งคืนอ็อบเจ็กต์การเชื่อมต่อ เมื่อใช้ฟังก์ชันนี้คุณสามารถสร้างการเชื่อมต่อกับ PostgreSQL

ตัวอย่าง

รหัส Python ต่อไปนี้แสดงวิธีการเชื่อมต่อกับฐานข้อมูลที่มีอยู่ หากฐานข้อมูลไม่มีอยู่ฐานข้อมูลจะถูกสร้างขึ้นและในที่สุดก็จะส่งคืนวัตถุฐานข้อมูล ชื่อของฐานข้อมูลเริ่มต้นของ PostgreSQL คือ postrgre ดังนั้นเราจึงจัดหาให้เป็นชื่อฐานข้อมูล

import psycopg2
#establishing the connection
conn = psycopg2.connect(
   database="postgres", user='postgres', password='password', 
   host='127.0.0.1', port= '5432'
)

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

#Executing an MYSQL function using the execute() method
cursor.execute("select version()")

#Fetch a single row using fetchone() method.
data = cursor.fetchone()
print("Connection established to: ",data)

#Closing the connection
conn.close()
Connection established to: (
   'PostgreSQL 11.5, compiled by Visual C++ build 1914, 64-bit',
)

เอาต์พุต

Connection established to: (
   'PostgreSQL 11.5, compiled by Visual C++ build 1914, 64-bit',
)

คุณสามารถสร้างฐานข้อมูลใน PostgreSQL โดยใช้คำสั่ง CREATE DATABASE คุณสามารถเรียกใช้คำสั่งนี้ใน PostgreSQL shell prompt โดยระบุชื่อของฐานข้อมูลที่จะสร้างหลังจากคำสั่ง

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง CREATE DATABASE

CREATE DATABASE dbname;

ตัวอย่าง

คำสั่งต่อไปนี้สร้างฐานข้อมูลชื่อ testdb ใน PostgreSQL

postgres=# CREATE DATABASE testdb;
CREATE DATABASE

คุณสามารถแสดงรายการฐานข้อมูลใน PostgreSQL โดยใช้คำสั่ง \ l หากคุณตรวจสอบรายชื่อฐานข้อมูลคุณสามารถค้นหาฐานข้อมูลที่สร้างขึ้นใหม่ได้ดังนี้ -

postgres=# \l
                                                List of databases
   Name    | Owner    | Encoding |        Collate             |     Ctype   |
-----------+----------+----------+----------------------------+-------------+
mydb       | postgres | UTF8     | English_United States.1252 | ........... |
postgres   | postgres | UTF8     | English_United States.1252 | ........... |
template0  | postgres | UTF8     | English_United States.1252 | ........... |
template1  | postgres | UTF8     | English_United States.1252 | ........... |
testdb     | postgres | UTF8     | English_United States.1252 | ........... |
(5 rows)

คุณยังสามารถสร้างฐานข้อมูลใน PostgreSQL จาก command prompt โดยใช้คำสั่งcreatedbซึ่งเป็น wrapper รอบ ๆ คำสั่ง SQL CREATE DATABASE

C:\Program Files\PostgreSQL\11\bin> createdb -h localhost -p 5432 -U postgres sampledb
Password:

การสร้างฐานข้อมูลโดยใช้ Python

คลาสเคอร์เซอร์ของ psycopg2 มีวิธีการต่างๆในการดำเนินการคำสั่ง PostgreSQL ต่างๆเรียกข้อมูลบันทึกและคัดลอกข้อมูล คุณสามารถสร้างวัตถุเคอร์เซอร์โดยใช้เคอร์เซอร์ () วิธีการของคลาส Connection

เมธอด execute () ของคลาสนี้ยอมรับแบบสอบถาม PostgreSQL เป็นพารามิเตอร์และเรียกใช้งาน

ดังนั้นในการสร้างฐานข้อมูลใน PostgreSQL ให้เรียกใช้แบบสอบถาม CREATE DATABASE โดยใช้วิธีนี้

ตัวอย่าง

ตัวอย่าง python ต่อไปนี้สร้างฐานข้อมูลชื่อ mydb ในฐานข้อมูล PostgreSQL

import psycopg2

#establishing the connection

conn = psycopg2.connect(
   database="postgres", user='postgres', password='password', 
   host='127.0.0.1', port= '5432'
)
conn.autocommit = True

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

#Preparing query to create a database
sql = '''CREATE database mydb''';

#Creating a database
cursor.execute(sql)
print("Database created successfully........")

#Closing the connection
conn.close()

เอาต์พุต

Database created successfully........

คุณสามารถสร้างตารางใหม่ในฐานข้อมูลใน PostgreSQL โดยใช้คำสั่ง CREATE TABLE ขณะดำเนินการนี้คุณต้องระบุชื่อของตารางชื่อคอลัมน์และประเภทข้อมูล

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง CREATE TABLE ใน PostgreSQL

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

ตัวอย่าง

ตัวอย่างต่อไปนี้สร้างตารางที่มีชื่อ CRICKETERS ใน PostgreSQL

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

คุณสามารถรับรายการตารางในฐานข้อมูลใน PostgreSQL โดยใช้คำสั่ง \ dt หลังจากสร้างตารางแล้วหากคุณสามารถตรวจสอบรายชื่อตารางได้คุณสามารถสังเกตตารางที่สร้างขึ้นใหม่ได้ดังนี้ -

postgres=# \dt
         List of relations
Schema  | Name       | Type  | Owner
--------+------------+-------+----------
public  | cricketers | table | postgres
(1 row)
postgres=#

ในทำนองเดียวกันคุณจะได้รับคำอธิบายของตารางที่สร้างขึ้นโดยใช้ \ d ดังที่แสดงด้านล่าง -

postgres=# \d cricketers
                        Table "public.cricketers"
Column          | Type                   | Collation | Nullable | Default
----------------+------------------------+-----------+----------+---------
first_name      | character varying(255) |           |          |
last_name       | character varying(255) |           |          |
age             | integer                |           |          |
place_of_birth  | character varying(255) |           |          |
country         | character varying(255) |           |          |

postgres=#

การสร้างตารางโดยใช้ Python

การสร้างตารางโดยใช้หลามคุณจำเป็นต้องดำเนินการตามคำสั่งสร้างตารางโดยใช้รัน () วิธีการเคอร์เซอร์ของpyscopg2

ตัวอย่าง

ตัวอย่าง Python ต่อไปนี้สร้างตารางที่มีพนักงานชื่อ

import psycopg2

#Establishing the connection

conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)

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

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT)'''
cursor.execute(sql)
print("Table created successfully........")

#Closing the connection
conn.close()

เอาต์พุต

Table created successfully........

คุณสามารถแทรกบันทึกลงในตารางที่มีอยู่ใน PostgreSQL โดยใช้ไฟล์ INSERT INTOคำให้การ. ขณะดำเนินการนี้คุณต้องระบุชื่อของตารางและค่าสำหรับคอลัมน์ในตาราง

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ที่แนะนำของคำสั่ง INSERT -

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

โดยที่ column1, column2, column3, .. คือชื่อของคอลัมน์ของตารางและ value1, value2, value3, ... คือค่าที่คุณต้องแทรกลงในตาราง

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้คำสั่ง CREATE TABLE ดังที่แสดงด้านล่าง -

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

ตามคำสั่ง PostgreSQL แทรกแถวในตารางที่สร้างไว้ด้านบน -

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

ในขณะที่แทรกระเบียนโดยใช้คำสั่ง INSERT INTO หากคุณข้ามชื่อคอลัมน์ใด ๆ บันทึกจะถูกแทรกโดยเว้นช่องว่างไว้ที่คอลัมน์ที่คุณข้ามไป

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

คุณยังสามารถแทรกระเบียนลงในตารางได้โดยไม่ต้องระบุชื่อคอลัมน์หากลำดับของค่าที่คุณส่งผ่านนั้นเหมือนกับชื่อคอลัมน์ตามลำดับในตาราง

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

หลังจากใส่ระเบียนลงในตารางแล้วคุณสามารถตรวจสอบเนื้อหาได้โดยใช้คำสั่ง SELECT ดังที่แสดงด้านล่าง -

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)

การแทรกข้อมูลโดยใช้ Python

คลาสเคอร์เซอร์ของ psycopg2 จัดเตรียมเมธอดที่มีเมธอด name execute () วิธีนี้ยอมรับการสืบค้นเป็นพารามิเตอร์และดำเนินการ

ดังนั้นในการแทรกข้อมูลลงในตารางใน PostgreSQL โดยใช้ python -

  • นำเข้า psycopg2 แพ็คเกจ

  • สร้างวัตถุการเชื่อมต่อโดยใช้ connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์

  • ปิดโหมดการคอมมิตอัตโนมัติโดยตั้งค่า false เป็นค่าให้กับแอตทริบิวต์ autocommit.

  • cursor() วิธีการของ Connectionคลาสของไลบรารี psycopg2 ส่งคืนวัตถุเคอร์เซอร์ สร้างวัตถุเคอร์เซอร์โดยใช้วิธีนี้ ..

  • จากนั้นดำเนินการคำสั่ง INSERT โดยส่ง / พวกเขาเป็นพารามิเตอร์ไปยังเมธอด execute ()

ตัวอย่าง

ต่อไปนี้โปรแกรม Python จะสร้างตารางที่มีชื่อ EMPLOYEE ในฐานข้อมูล PostgreSQL และแทรกระเบียนลงในนั้นโดยใช้วิธีการ ()

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()

เอาต์พุต

Records inserted........

คุณสามารถดึงเนื้อหาของตารางที่มีอยู่ใน PostgreSQL โดยใช้คำสั่ง SELECT ในคำสั่งนี้คุณต้องระบุชื่อของตารางและส่งคืนเนื้อหาในรูปแบบตารางซึ่งเรียกว่าชุดผลลัพธ์

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง SELECT ใน PostgreSQL -

SELECT column1, column2, columnN FROM table_name;

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -

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

และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -

postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
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

คำค้นหา SELECT ต่อไปนี้จะดึงค่าของคอลัมน์ FIRST_NAME, LAST_NAME และ, COUNTRY จากตาราง CRICKETERS

postgres=# SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
 first_name | last_name  | country
------------+------------+-------------
Shikhar     | Dhawan     | India
Jonathan    | Trott      | SouthAfrica
Kumara      | Sangakkara | Srilanka
Virat       | Kohli      | India
Rohit       | Sharma     | India
(5 rows)

หากคุณต้องการดึงข้อมูลคอลัมน์ทั้งหมดของแต่ละระเบียนคุณต้องแทนที่ชื่อของคอลัมน์ด้วย "⚹" ดังที่แสดงด้านล่าง -

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

postgres=#

การดึงข้อมูลโดยใช้ Python

READ Operation บนฐานข้อมูลใด ๆ หมายถึงการดึงข้อมูลที่เป็นประโยชน์จากฐานข้อมูล คุณสามารถดึงข้อมูลจาก PostgreSQL โดยใช้วิธีการดึงข้อมูล () ที่ Psycopg2 จัดเตรียมไว้ให้

คลาส Cursor มีสามวิธี ได้แก่ fetchall (), fetchmany () และ, fetchone () โดยที่

  • วิธี fetchall () ดึงข้อมูลแถวทั้งหมดในชุดผลลัพธ์ของแบบสอบถามและส่งกลับเป็นรายการสิ่งที่เพิ่มขึ้น (หากเราดำเนินการสิ่งนี้หลังจากเรียกข้อมูลไม่กี่แถวระบบจะส่งคืนแถวที่เหลือ)

  • วิธีการ fetchone () ดึงข้อมูลแถวถัดไปจากผลลัพธ์ของคิวรีและส่งกลับเป็นทูเพิล

Note - ชุดผลลัพธ์คือวัตถุที่ส่งคืนเมื่อวัตถุเคอร์เซอร์ถูกใช้เพื่อสืบค้นตาราง

ตัวอย่าง

โปรแกรม Python ต่อไปนี้เชื่อมต่อกับฐานข้อมูลชื่อ mydb ของ PostgreSQL และดึงข้อมูลทั้งหมดจากตารางชื่อ EMPLOYEE

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()

#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
   ('Vinay', 'Battacharya', 20, 'M', 6000.0),
   ('Sharukh', 'Sheik', 25, 'M', 8300.0),
   ('Sarmista', 'Sharma', 26, 'F', 10000.0),
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]

ในขณะที่ดำเนินการ SELECT, UPDATE หรือ, DELETE คุณสามารถระบุเงื่อนไขเพื่อกรองเร็กคอร์ดโดยใช้คำสั่ง WHERE การดำเนินการจะดำเนินการกับระเบียนที่ตรงตามเงื่อนไขที่กำหนด

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของ WHERE clause ใน PostgreSQL -

SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]

คุณสามารถระบุ search_condition โดยใช้ตัวดำเนินการเปรียบเทียบหรือตรรกะ เช่น>, <, =, LIKE, NOT ฯลฯ ตัวอย่างต่อไปนี้จะทำให้แนวคิดนี้ชัดเจน

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -

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

และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -

postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
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

คำสั่ง SELECT ต่อไปนี้จะดึงข้อมูลที่มีอายุมากกว่า 35 -

postgres=# SELECT * FROM CRICKETERS WHERE AGE > 35;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Jonathan    | Trott      | 38  | CapeTown       | SouthAfrica
Kumara      | Sangakkara | 41  | Matale         | Srilanka
(2 rows)

postgres=#

โดยใช้คำสั่ง Python

ในการดึงข้อมูลเฉพาะจากตารางโดยใช้โปรแกรม python ให้เรียกใช้คำสั่งSELECTด้วยคำสั่ง WHEREโดยส่งเป็นพารามิเตอร์ไปยังexecute() วิธี.

ตัวอย่าง

ตัวอย่าง python ต่อไปนี้แสดงให้เห็นถึงการใช้คำสั่ง WHERE โดยใช้ python

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()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT)'''
cursor.execute(sql)

#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE 
   (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)"
data = [('Krishna', 'Sharma', 19, 'M', 2000), ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'M', 5000),('Mac', 'Mohan', 26, 'M', 2000)]
cursor.executemany(insert_stmt, data)

#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]

โดยปกติถ้าคุณพยายามดึงข้อมูลจากตารางคุณจะได้รับระเบียนในลำดับเดียวกับที่คุณใส่ไว้

ใช้ ORDER BY อนุประโยคในขณะที่ดึงข้อมูลของตารางคุณสามารถเรียงลำดับระเบียนผลลัพธ์ตามลำดับจากน้อยไปมากหรือมากไปหาน้อยตามคอลัมน์ที่ต้องการ

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง ORDER BY ใน PostgreSQL

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -

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

และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -

postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
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

คำสั่ง SELECT ต่อไปนี้จะดึงข้อมูลแถวของตาราง CRICKETERS ตามลำดับจากน้อยไปหามาก -

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

คุณสามารถใช้คอลัมน์มากกว่าหนึ่งคอลัมน์เพื่อจัดเรียงระเบียนของตาราง ต่อไปนี้คำสั่ง SELECT จัดเรียงระเบียนของตาราง CRICKETERS ตามอายุของคอลัมน์และ FIRST_NAME

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

โดยค่าเริ่มต้นไฟล์ ORDER BYอนุประโยคจะเรียงลำดับระเบียนของตารางจากน้อยไปหามาก คุณสามารถจัดเรียงผลลัพธ์จากมากไปหาน้อยโดยใช้ DESC เป็น -

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

ORDER BY Clause โดยใช้ Python

ในการดึงเนื้อหาของตารางตามลำดับที่ระบุให้เรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์และส่งคำสั่ง SELECT พร้อมกับคำสั่ง ORDER BY เป็นพารามิเตอร์ไป

ตัวอย่าง

ในตัวอย่างต่อไปนี้เรากำลังสร้างตารางที่มีชื่อและพนักงานเติมข้อมูลและดึงข้อมูลกลับมาตามลำดับ (จากน้อยไปมาก) ของอายุโดยใช้คำสั่ง ORDER BY

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()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#Creating a table
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT, SEX CHAR(1),
   INCOME INT,
   CONTACT INT)'''
cursor.execute(sql)

#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE 
   (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME, CONTACT) VALUES (%s, %s, %s, %s, %s, %s)"

data = [('Krishna', 'Sharma', 26, 'M', 2000, 101), 
   ('Raj', 'Kandukuri', 20, 'M', 7000, 102),
   ('Ramya', 'Ramapriya', 29, 'F', 5000, 103),
   ('Mac', 'Mohan', 26, 'M', 2000, 104)]
cursor.executemany(insert_stmt, data)
conn.commit()

#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

[('Sharukh', 'Sheik', 25, 'M', 8300.0), ('Sarmista', 'Sharma', 26, 'F', 10000.0)]

คุณสามารถแก้ไขเนื้อหาของระเบียนที่มีอยู่ของตารางใน PostgreSQL โดยใช้คำสั่ง UPDATE ในการอัปเดตแถวเฉพาะคุณต้องใช้คำสั่ง WHERE ควบคู่ไปด้วย

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง UPDATE ใน PostgreSQL -

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -

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

และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -

postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
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

ข้อความต่อไปนี้ปรับเปลี่ยนอายุของนักคริกเก็ตซึ่งมีชื่อจริง Shikhar -

postgres=# UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
UPDATE 1
postgres=#

หากคุณเรียกดูบันทึกที่ FIRST_NAME เป็น Shikhar คุณสังเกตว่าค่าอายุเปลี่ยนเป็น 45 -

postgres=# SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
Shikhar     | Dhawan    | 45  | Delhi          | India
(1 row)

postgres=#

หากคุณไม่ได้ใช้คำสั่ง WHERE ค่าของระเบียนทั้งหมดจะได้รับการอัปเดต คำสั่ง UPDATE ต่อไปนี้จะเพิ่มอายุของระเบียนทั้งหมดในตาราง CRICKETERS ขึ้น 1 -

postgres=# UPDATE CRICKETERS SET AGE = AGE+1;
UPDATE 5

หากคุณดึงเนื้อหาของตารางโดยใช้คำสั่ง SELECT คุณจะเห็นค่าที่อัพเดตเป็น -

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Jonathan    | Trott      | 39  | CapeTown       | SouthAfrica
Kumara      | Sangakkara | 42  | Matale         | Srilanka
Virat       | Kohli      | 31  | Delhi          | India
Rohit       | Sharma     | 33  | Nagpur         | India
Shikhar     | Dhawan     | 46  | Delhi          | India
(5 rows)

การอัปเดตบันทึกโดยใช้ Python

คลาสเคอร์เซอร์ของ psycopg2 จัดเตรียมเมธอดที่มีเมธอด name execute () วิธีนี้ยอมรับการสืบค้นเป็นพารามิเตอร์และดำเนินการ

ดังนั้นในการแทรกข้อมูลลงในตารางใน PostgreSQL โดยใช้ python -

  • นำเข้า psycopg2 แพ็คเกจ

  • สร้างวัตถุการเชื่อมต่อโดยใช้ connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์

  • ปิดโหมดการคอมมิตอัตโนมัติโดยตั้งค่า false เป็นค่าให้กับแอตทริบิวต์ autocommit.

  • cursor() วิธีการของ Connectionคลาสของไลบรารี psycopg2 ส่งคืนวัตถุเคอร์เซอร์ สร้างวัตถุเคอร์เซอร์โดยใช้วิธีนี้

  • จากนั้นรันคำสั่ง UPDATE โดยส่งเป็นพารามิเตอร์ไปยังเมธอด execute ()

ตัวอย่าง

การติดตามโค้ด Python จะอัปเดตเนื้อหาของตารางพนักงานและดึงผลลัพธ์ -

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()

#Fetching all the rows before the update
print("Contents of the Employee table: ")
sql = '''SELECT * from EMPLOYEE'''
cursor.execute(sql)
print(cursor.fetchall())

#Updating the records
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M'"
cursor.execute(sql)
print("Table updated...... ")

#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
sql = '''SELECT * from EMPLOYEE'''
cursor.execute(sql)
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

Contents of the Employee table:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Table updated......
Contents of the Employee table after the update operation:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0)
]

คุณสามารถลบระเบียนในตารางที่มีอยู่โดยใช้ไฟล์ DELETE FROMคำสั่งของฐานข้อมูล PostgreSQL ในการลบระเบียนเฉพาะคุณต้องใช้ WHERE clause ควบคู่ไปด้วย

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม DELETE ใน PostgreSQL -

DELETE FROM table_name [WHERE Clause]

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -

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

และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -

postgres=# insert into CRICKETERS values ('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values ('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
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

คำสั่งต่อไปนี้จะลบบันทึกของนักคริกเก็ตที่มีนามสกุล 'Sangakkara'

postgres=# DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
DELETE 1

หากคุณดึงเนื้อหาของตารางโดยใช้คำสั่ง SELECT คุณจะเห็นเพียง 4 ระเบียนเนื่องจากเราได้ลบไปแล้ว

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+-------------
Jonathan    |     Trott |  39 | CapeTown       | SouthAfrica
Virat       |     Kohli |  31 | Delhi          | India
Rohit       |    Sharma |  33 | Nagpur         | India
Shikhar     |    Dhawan |  46 | Delhi          | India

(4 rows)

หากคุณดำเนินการคำสั่ง DELETE FROM โดยไม่มีคำสั่ง WHERE ระเบียนทั้งหมดจากตารางที่ระบุจะถูกลบ

postgres=# DELETE FROM CRICKETERS;
DELETE 4

เนื่องจากคุณได้ลบบันทึกทั้งหมดแล้วหากคุณพยายามดึงเนื้อหาของตาราง CRICKETERS โดยใช้คำสั่ง SELECT คุณจะได้ผลลัพธ์ที่ว่างเปล่าตามที่แสดงด้านล่าง -

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
(0 rows)

การลบข้อมูลโดยใช้ Python

คลาสเคอร์เซอร์ของ psycopg2 จัดเตรียมเมธอดที่มีเมธอด name execute () วิธีนี้ยอมรับการสืบค้นเป็นพารามิเตอร์และดำเนินการ

ดังนั้นในการแทรกข้อมูลลงในตารางใน PostgreSQL โดยใช้ python -

  • นำเข้า psycopg2 แพ็คเกจ

  • สร้างวัตถุการเชื่อมต่อโดยใช้ connect() วิธีการโดยส่งชื่อผู้ใช้รหัสผ่านโฮสต์ (ค่าดีฟอลต์ทางเลือก: localhost) และฐานข้อมูล (ทางเลือก) เป็นพารามิเตอร์

  • ปิดโหมดการคอมมิตอัตโนมัติโดยตั้งค่า false เป็นค่าให้กับแอตทริบิวต์ autocommit.

  • cursor() วิธีการของ Connectionคลาสของไลบรารี psycopg2 ส่งคืนวัตถุเคอร์เซอร์ สร้างวัตถุเคอร์เซอร์โดยใช้วิธีนี้

  • จากนั้นรันคำสั่ง DELETE โดยส่งเป็นพารามิเตอร์ไปยังเมธอด execute ()

ตัวอย่าง

รหัส Python ต่อไปนี้จะลบบันทึกของตาราง EMPLOYEE ที่มีค่าอายุมากกว่า 25 -

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()

#Retrieving contents of the table
print("Contents of the table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Deleting records
cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''')

#Retrieving data after delete
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

Contents of the table:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0)
]
Contents of the table after delete operation:
[  
   ('Tripthi', 'Mishra', 24, 'F', 6000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0)
]

คุณสามารถวางตารางจากฐานข้อมูล PostgreSQL โดยใช้คำสั่ง DROP TABLE

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROP TABLE ใน PostgreSQL -

DROP TABLE table_name;

ตัวอย่าง

สมมติว่าเราได้สร้างตารางสองตารางโดยใช้ชื่อ CRICKETERS และ EMPLOYEES โดยใช้คำค้นหาต่อไปนี้ -

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=#
postgres=# CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), 
   AGE INT, SEX CHAR(1), INCOME FLOAT
);
CREATE TABLE
postgres=#

ตอนนี้หากคุณตรวจสอบรายการตารางโดยใช้คำสั่ง“ \ dt” คุณจะเห็นตารางที่สร้างไว้ด้านบนเป็น -

postgres=# \dt;
            List of relations
 Schema | Name       | Type  | Owner
--------+------------+-------+----------
 public | cricketers | table | postgres
 public | employee   | table | postgres
(2 rows)
postgres=#

คำสั่งต่อไปนี้จะลบตารางชื่อพนักงานออกจากฐานข้อมูล -

postgres=# DROP table employee;
DROP TABLE

เนื่องจากคุณได้ลบตารางพนักงานไปแล้วหากคุณเรียกดูรายการตารางอีกครั้งคุณสามารถสังเกตได้เพียงตารางเดียวในตารางนั้น

postgres=# \dt;
            List of relations
Schema  | Name       | Type  | Owner
--------+------------+-------+----------
public  | cricketers | table | postgres
(1 row)


postgres=#

หากคุณพยายามลบตารางพนักงานอีกครั้งเนื่องจากคุณได้ลบไปแล้วคุณจะได้รับข้อผิดพลาดว่า“ ไม่มีตาราง” ดังที่แสดงด้านล่าง -

postgres=# DROP table employee;
ERROR: table "employee" does not exist
postgres=#

ในการแก้ไขปัญหานี้คุณสามารถใช้คำสั่ง IF EXISTS ร่วมกับคำสั่ง DELTE สิ่งนี้จะลบตารางหากมีอยู่มิฉะนั้นจะข้ามการดำเนินการ DLETE

postgres=# DROP table IF EXISTS employee;
NOTICE: table "employee" does not exist, skipping
DROP TABLE
postgres=#

การลบทั้งตารางโดยใช้ Python

คุณสามารถวางตารางได้ทุกเมื่อที่ต้องการโดยใช้คำสั่ง DROP แต่คุณต้องระมัดระวังให้มากในขณะที่ลบตารางที่มีอยู่เนื่องจากข้อมูลที่สูญหายจะไม่สามารถกู้คืนได้หลังจากลบตาราง

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()

#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE emp")
print("Table dropped... ")

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

#Table dropped...

ในขณะที่เรียกใช้คำสั่ง PostgreSQL SELECT คุณสามารถ จำกัด จำนวนระเบียนในผลลัพธ์โดยใช้ประโยค LIMIT

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์ของประโยค LMIT ใน PostgreSQL -

SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -

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

และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -

postgres=# insert into CRICKETERS values ('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values ('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
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

คำสั่งต่อไปนี้ดึงข้อมูล 3 ระเบียนแรกของตาราง Cricketers โดยใช้ประโยค LIMIT -

postgres=# SELECT * FROM CRICKETERS LIMIT 3;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
 Shikhar    | Dhawan     | 33  | Delhi          | India
 Jonathan   | Trott      | 38  | CapeTown       | SouthAfrica
 Kumara     | Sangakkara | 41  | Matale         | Srilanka

   (3 rows)

หากคุณต้องการรับเรกคอร์ดโดยเริ่มจากเร็กคอร์ดเฉพาะ (ออฟเซ็ต) คุณสามารถทำได้โดยใช้คำสั่ง OFFSET พร้อมกับ LIMIT

postgres=# SELECT * FROM CRICKETERS LIMIT 3 OFFSET 2;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+----------
 Kumara     | Sangakkara | 41  | Matale         | Srilanka
 Virat      | Kohli      | 30  | Delhi          | India
 Rohit      | Sharma     | 32  | Nagpur         | India

   (3 rows)
postgres=#

จำกัด ประโยคโดยใช้ Python

ตัวอย่าง python ต่อไปนี้จะดึงเนื้อหาของตารางชื่อ EMPLOYEE โดย จำกัด จำนวนเร็กคอร์ดในผลลัพธ์ไว้ที่ 2 -

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()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 2 OFFSET 2'''

#Executing the query
cursor.execute(sql)

#Fetching the data
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

[('Sharukh', 'Sheik', 25, 'M', 8300.0), ('Sarmista', 'Sharma', 26, 'F', 10000.0)]

เมื่อคุณแบ่งข้อมูลออกเป็นสองตารางคุณสามารถดึงเรกคอร์ดที่รวมกันจากสองตารางนี้โดยใช้ Joins

ตัวอย่าง

สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS และใส่ 5 ระเบียนลงในตารางดังที่แสดงด้านล่าง -

postgres=# CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, 
   Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
postgres=# insert into CRICKETERS values ('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
postgres=# insert into CRICKETERS values ('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
postgres=# insert into CRICKETERS values ('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
postgres=# insert into CRICKETERS values ('Virat', 'Kohli', 30, 'Delhi', 'India');
postgres=# insert into CRICKETERS values ('Rohit', 'Sharma', 32, 'Nagpur', 'India');

และถ้าเราสร้างตารางอื่นที่มีชื่อ OdiStats และใส่ 5 ระเบียนเข้าไปในชื่อ -

postgres=# CREATE TABLE ODIStats (
   First_Name VARCHAR(255), Matches INT, Runs INT, AVG FLOAT, 
   Centuries INT, HalfCenturies INT
);
postgres=# insert into OdiStats values ('Shikhar', 133, 5518, 44.5, 17, 27);
postgres=# insert into OdiStats values ('Jonathan', 68, 2819, 51.25, 4, 22);
postgres=# insert into OdiStats values ('Kumara', 404, 14234, 41.99, 25, 93);
postgres=# insert into OdiStats values ('Virat', 239, 11520, 60.31, 43, 54);
postgres=# insert into OdiStats values ('Rohit', 218, 8686, 48.53, 24, 42);

คำสั่งต่อไปนี้ดึงข้อมูลที่รวมค่าในสองตารางนี้ -

postgres=# SELECT
   Cricketers.First_Name, Cricketers.Last_Name, Cricketers.Country,
   OdiStats.matches, OdiStats.runs, OdiStats.centuries, OdiStats.halfcenturies
   from Cricketers INNER JOIN OdiStats ON Cricketers.First_Name = OdiStats.First_Name;
 first_name | last_name  | country     | matches | runs  | centuries | halfcenturies
------------+------------+-------------+---------+-------+-----------+---------------
 Shikhar    | Dhawan     | India       | 133     | 5518  | 17        | 27
 Jonathan   | Trott      | SouthAfrica | 68      | 2819  | 4         | 22
 Kumara     | Sangakkara | Srilanka    | 404     | 14234 | 25        | 93
 Virat      | Kohli      | India       | 239     | 11520 | 43        | 54
 Rohit      | Sharma     | India       | 218     | 8686  | 24        | 42
(5 rows)
   
postgres=#

เข้าร่วมโดยใช้ Python

เมื่อคุณแบ่งข้อมูลออกเป็นสองตารางคุณสามารถดึงเรกคอร์ดที่รวมกันจากสองตารางนี้โดยใช้ Joins

ตัวอย่าง

ต่อไปนี้โปรแกรม python แสดงให้เห็นถึงการใช้คำสั่ง JOIN -

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()

#Retrieving single row
sql = '''SELECT * from EMP INNER JOIN CONTACT ON EMP.CONTACT = CONTACT.ID'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

เอาต์พุต

[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0, 101, 101, '[email protected]', 'Hyderabad'), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0, 102, 102, '[email protected]', 'Vishakhapatnam'), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0, 103, 103, '[email protected] ', 'Pune'), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0, 104, 104, '[email protected]', 'Mumbai')
]

คลาสเคอร์เซอร์ของไลบรารี psycopg จัดเตรียมเมธอดในการดำเนินการคำสั่ง PostgreSQL ในฐานข้อมูลโดยใช้โค้ด python

ใช้วิธีการของมันคุณสามารถเรียกใช้คำสั่ง SQL ดึงข้อมูลจากชุดผลลัพธ์ขั้นตอนการโทร

คุณสามารถสร้าง Cursor วัตถุโดยใช้เคอร์เซอร์ () วิธีการของวัตถุการเชื่อมต่อ / คลาส

ตัวอย่าง

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()

วิธีการ

ต่อไปนี้เป็นวิธีการต่างๆที่จัดเตรียมโดยคลาส / อ็อบเจ็กต์ Cursor

ซีเนียร์ วิธีการและคำอธิบาย
1

callproc()

วิธีนี้ใช้เพื่อเรียกโพรซีเดอร์ที่มีอยู่ฐานข้อมูล PostgreSQL

2

close()

วิธีนี้ใช้เพื่อปิดวัตถุเคอร์เซอร์ปัจจุบัน

3

executemany()

วิธีนี้ยอมรับชุดรายการพารามิเตอร์ เตรียมแบบสอบถาม MySQL และดำเนินการกับพารามิเตอร์ทั้งหมด

4

execute()

วิธีนี้ยอมรับแบบสอบถาม MySQL เป็นพารามิเตอร์และเรียกใช้แบบสอบถามที่กำหนด

5

fetchall()

วิธีนี้จะดึงข้อมูลแถวทั้งหมดในชุดผลลัพธ์ของแบบสอบถามและส่งกลับเป็นรายการสิ่งที่เพิ่มขึ้น (ถ้าเราดำเนินการนี้หลังจากดึงข้อมูลไม่กี่แถวมันจะส่งคืนแถวที่เหลือ)

6

fetchone()

วิธีนี้ดึงข้อมูลแถวถัดไปจากผลลัพธ์ของคิวรีและส่งกลับเป็นทูเพิล

7

fetchmany()

วิธีนี้คล้ายกับ fetchone () แต่จะดึงข้อมูลชุดถัดไปของแถวในชุดผลลัพธ์ของแบบสอบถามแทนที่จะเป็นแถวเดียว

คุณสมบัติ

ต่อไปนี้เป็นคุณสมบัติของคลาส Cursor -

ซีเนียร์ คุณสมบัติและคำอธิบาย
1

description

นี่เป็นคุณสมบัติแบบอ่านอย่างเดียวซึ่งส่งคืนรายการที่มีคำอธิบายของคอลัมน์ในชุดผลลัพธ์

2

lastrowid

นี่เป็นคุณสมบัติแบบอ่านอย่างเดียวหากมีคอลัมน์ที่เพิ่มขึ้นโดยอัตโนมัติในตารางค่านี้จะส่งคืนค่าที่สร้างขึ้นสำหรับคอลัมน์นั้นในการดำเนินการ INSERT หรือ UPDATE ล่าสุด

3

rowcount

สิ่งนี้ส่งคืนจำนวนแถวที่ส่งคืน / อัปเดตในกรณีของการดำเนินการ SELECT และ UPDATE

4

closed

คุณสมบัตินี้ระบุว่าเคอร์เซอร์ถูกปิดหรือไม่ถ้าเป็นเช่นนั้นจะส่งกลับจริงหรือเท็จ

5

connection

สิ่งนี้ส่งคืนการอ้างอิงไปยังออบเจ็กต์การเชื่อมต่อที่ใช้สร้างเคอร์เซอร์นี้

6

name

คุณสมบัตินี้ส่งคืนชื่อของเคอร์เซอร์

7

scrollable

คุณสมบัตินี้ระบุว่าเคอร์เซอร์หนึ่งสามารถเลื่อนได้หรือไม่