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

SQLite3 สามารถรวมเข้ากับ Python โดยใช้โมดูล sqlite3 ซึ่งเขียนโดย Gerhard Haring มีอินเทอร์เฟซ SQL ที่สอดคล้องกับข้อกำหนด DB-API 2.0 ที่อธิบายโดย PEP 249 คุณไม่จำเป็นต้องติดตั้งโมดูลนี้แยกต่างหากเนื่องจากมีการจัดส่งโดยค่าเริ่มต้นพร้อมกับ Python เวอร์ชัน 2.5.x เป็นต้นไป

ในการใช้โมดูล sqlite3 ก่อนอื่นคุณต้องสร้างวัตถุการเชื่อมต่อที่แสดงถึงฐานข้อมูลจากนั้นคุณสามารถสร้างวัตถุเคอร์เซอร์ซึ่งจะช่วยคุณในการเรียกใช้คำสั่ง SQL ทั้งหมด

Python SQLite3 Module APIs

ต่อไปนี้เป็นรูทีนโมดูล sqlite3 ที่สำคัญซึ่งสามารถเพียงพอต่อความต้องการของคุณในการทำงานกับฐานข้อมูล SQLite จากโปรแกรม Python ของคุณ หากคุณกำลังมองหาแอปพลิเคชันที่ซับซ้อนมากขึ้นคุณสามารถดูเอกสารอย่างเป็นทางการของโมดูล Python sqlite3

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

sqlite3.connect(database [,timeout ,other optional arguments])

API นี้เปิดการเชื่อมต่อกับไฟล์ฐานข้อมูล SQLite คุณสามารถใช้ ": memory:" เพื่อเปิดการเชื่อมต่อฐานข้อมูลกับฐานข้อมูลที่อยู่ใน RAM แทนบนดิสก์ หากเปิดฐานข้อมูลสำเร็จจะส่งคืนวัตถุการเชื่อมต่อ

2

connection.cursor([cursorClass])

รูทีนนี้จะสร้างเคอร์เซอร์ซึ่งจะใช้ตลอดการเขียนโปรแกรมฐานข้อมูลของคุณด้วย Python วิธีนี้ยอมรับ cursorClass พารามิเตอร์ทางเลือกเดียว หากให้มาต้องเป็นคลาสเคอร์เซอร์แบบกำหนดเองที่ขยาย sqlite3.Cursor

3

cursor.execute(sql [, optional parameters])

รูทีนนี้รันคำสั่ง SQL คำสั่ง SQL อาจถูกกำหนดพารามิเตอร์ (เช่นตัวยึดแทนตัวอักษร SQL) โมดูล sqlite3 รองรับตัวยึดตำแหน่งสองประเภท: เครื่องหมายคำถามและตัวยึดตำแหน่งที่ระบุชื่อ (สไตล์ที่ระบุชื่อ)

For example - cursor.execute ("แทรกลงในค่าผู้คน (?,?)", (ใครอายุ))

4

connection.execute(sql [, optional parameters])

รูทีนนี้เป็นทางลัดของวิธีการดำเนินการข้างต้นที่จัดเตรียมโดยวัตถุเคอร์เซอร์และจะสร้างวัตถุเคอร์เซอร์กลางโดยเรียกวิธีการเคอร์เซอร์จากนั้นเรียกวิธีการดำเนินการของเคอร์เซอร์ด้วยพารามิเตอร์ที่กำหนด

5

cursor.executemany(sql, seq_of_parameters)

รูทีนนี้เรียกใช้คำสั่ง SQL กับลำดับพารามิเตอร์หรือการแม็พทั้งหมดที่พบในลำดับ sql

6

connection.executemany(sql[, parameters])

รูทีนนี้เป็นทางลัดที่สร้างวัตถุเคอร์เซอร์กลางโดยการเรียกใช้วิธีเคอร์เซอร์จากนั้นเรียกวิธีการดำเนินการเคอร์เซอร์หลายวิธีด้วยพารามิเตอร์ที่กำหนด

7

cursor.executescript(sql_script)

รูทีนนี้เรียกใช้คำสั่ง SQL หลายคำสั่งพร้อมกันในรูปแบบของสคริปต์ มันออกคำสั่ง COMMIT ก่อนจากนั้นเรียกใช้สคริปต์ SQL ที่ได้รับเป็นพารามิเตอร์ คำสั่ง SQL ทั้งหมดควรคั่นด้วยเซมิโคลอน (;)

8

connection.executescript(sql_script)

รูทีนนี้เป็นทางลัดที่สร้างวัตถุเคอร์เซอร์กลางโดยเรียกวิธีการเคอร์เซอร์จากนั้นเรียกเมธอด executescript ของเคอร์เซอร์ด้วยพารามิเตอร์ที่กำหนด

9

connection.total_changes()

รูทีนนี้จะส่งคืนจำนวนแถวฐานข้อมูลทั้งหมดที่ถูกแก้ไขแทรกหรือลบไปตั้งแต่เปิดการเชื่อมต่อฐานข้อมูล

10

connection.commit()

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

11

connection.rollback()

วิธีนี้ย้อนกลับการเปลี่ยนแปลงใด ๆ ในฐานข้อมูลตั้งแต่การเรียกครั้งสุดท้ายเพื่อกระทำ ()

12

connection.close()

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

13

cursor.fetchone()

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

14

cursor.fetchmany([size = cursor.arraysize])

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

15

cursor.fetchall()

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

ในการสร้างการเชื่อมต่อกับพรอมต์คำสั่ง SQLite Open ให้เรียกดูตำแหน่งที่คุณติดตั้ง SQLite และดำเนินการคำสั่ง sqlite3 ดังแสดงด้านล่าง -

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

คุณสามารถสื่อสารกับฐานข้อมูล SQLite2 โดยใช้โมดูล SQLite3 python ในการทำเช่นนั้นก่อนอื่นคุณต้องสร้างการเชื่อมต่อ (สร้างวัตถุการเชื่อมต่อ)

ในการสร้างการเชื่อมต่อกับฐานข้อมูล SQLite3 โดยใช้ python คุณต้อง -

  • นำเข้าโมดูล sqlite3 โดยใช้คำสั่งนำเข้า

  • เมธอด connect () ยอมรับชื่อของฐานข้อมูลที่คุณต้องการเชื่อมต่อเป็นพารามิเตอร์และส่งคืนอ็อบเจ็กต์ Connection

ตัวอย่าง

import sqlite3
conn = sqlite3.connect('example.db')

เอาต์พุต

print("Connection established ..........")

การใช้คำสั่ง SQLite CREATE TABLE คุณสามารถสร้างตารางในฐานข้อมูลได้

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์สำหรับสร้างตารางในฐานข้อมูล SQLite -

CREATE TABLE database_name.table_name(
   column1 datatype PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

ตัวอย่าง

คำสั่ง / คำสั่ง SQLite ต่อไปนี้จะสร้างตารางที่มีชื่อ CRICKETERS ในฐานข้อมูล SQLite -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

ให้เราสร้าง OdiStats อีกหนึ่งตารางที่อธิบายสถิติคริกเก็ตหนึ่งวันของผู้เล่นแต่ละคนในตาราง CRICKETERS

sqlite> CREATE TABLE ODIStats (
   First_Name VARCHAR(255),
   Matches INT,
   Runs INT,
   AVG FLOAT,
   Centuries INT,
   HalfCenturies INT 
);
sqlite>

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

sqlite> . tables
CRICKETERS ODIStats
sqlite>

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

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

ดังนั้นในการสร้างตารางในฐานข้อมูล SQLite โดยใช้ python -

  • สร้างการเชื่อมต่อกับฐานข้อมูลโดยใช้เมธอด connect ()

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

  • ตอนนี้ดำเนินการคำสั่ง CREATE TABLE โดยใช้เมธอด execute () ของคลาส Cursor

ตัวอย่าง

ต่อไปนี้โปรแกรม Python สร้างตารางชื่อ Employee ใน SQLite3 -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#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........")

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

#Closing the connection
conn.close()

เอาต์พุต

Table created successfully........

คุณสามารถเพิ่มแถวใหม่ในตาราง SQLite ที่มีอยู่โดยใช้คำสั่ง 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 ดังที่แสดงด้านล่าง -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS (First_Name, Last_Name, Age, Place_Of_Birth, Country) 
   values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite>

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

sqlite> insert into CRICKETERS (First_Name, Last_Name, Country) 
   values ('Jonathan', 'Trott', 'SouthAfrica');
sqlite>

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

sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> select * from cricketers;
Shikhar  |Dhawan     | 33 | Delhi | India
Jonathan |Trott      |    |       | SouthAfrica
Kumara   |Sangakkara | 41 | Matale| Srilanka
Virat    |Kohli      | 30 | Delhi | India
Rohit    |Sharma     | 32 | Nagpur| India
sqlite>

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

ในการเพิ่มระเบียนลงในตารางที่มีอยู่ในฐานข้อมูล SQLite -

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

  • สร้างอ็อบเจ็กต์การเชื่อมต่อโดยใช้เมธอด connect () โดยส่งชื่อของฐานข้อมูลเป็นพารามิเตอร์ไป

  • cursor()วิธีการส่งคืนวัตถุเคอร์เซอร์ที่คุณสามารถสื่อสารกับ SQLite3 สร้างวัตถุเคอร์เซอร์โดยเรียกใช้เคอร์เซอร์ () วัตถุบนวัตถุการเชื่อมต่อ (สร้างด้านบน)

  • จากนั้นเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งคำสั่ง INSERT เป็นพารามิเตอร์ไป

ตัวอย่าง

ตัวอย่าง python ต่อไปนี้จะแทรกระเบียนลงในตารางชื่อ EMPLOYEE -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

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

ไวยากรณ์

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

SELECT column1, column2, columnN FROM table_name;

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
Shikhar   |Dhawan       |India
Jonathan  |Trott        |SouthAfrica
Kumara    |Sangakkara   |Srilanka
Virat     |Kohli        |India
Rohit     |Sharma       |India
sqlite>

ตามที่คุณสังเกตคำสั่ง SELECT ของฐานข้อมูล SQLite จะส่งคืนระเบียนของตารางที่ระบุ ในการรับเอาต์พุตที่จัดรูปแบบคุณต้องตั้งค่าไฟล์header, และ mode โดยใช้คำสั่งที่เกี่ยวข้องก่อนคำสั่ง SELECT ดังที่แสดงด้านล่าง -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
First_Name   Last_Name    Country
----------   ----------   ----------
Shikhar      Dhawan       India
Jonathan     Trott        SouthAfric
Kumara       Sangakkara   rilanka
Virat        Kohli        India
Rohit        Sharma       India

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

sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age        Place_Of_Birth   Country
----------   ----------   -------    --------------   ----------
Shikhar      Dhawan       33         Delhi            India
Jonathan     Trott        38         CapeTown         SouthAfric
Kumara       Sangakkara   41         Matale           Srilanka
Virat        Kohli        30         Delhi            India
Rohit        Sharma       32         Nagpur           India
sqlite>

ในSQLiteโดยค่าเริ่มต้นความกว้างของคอลัมน์คือ 10 ค่าความกว้างเกินกว่านี้จะสับ (สังเกตคอลัมน์ของประเทศ 2 ครั้งแถวในตารางข้างต้น) คุณสามารถตั้งค่าความกว้างของแต่ละคอลัมน์เป็นค่าที่ต้องการโดยใช้.width คำสั่งก่อนดึงเนื้อหาของตารางตามที่แสดงด้านล่าง -

sqlite> .width 10, 10, 4, 10, 13
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   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
sqlite>

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

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

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

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

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

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

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

ตัวอย่าง

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

โปรแกรม Python ต่อไปนี้จะแสดงวิธีการดึงข้อมูลและแสดงบันทึกจากตาราง COMPANY ที่สร้างขึ้นในตัวอย่างข้างต้น

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#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)
]

หากคุณต้องการดึงข้อมูลลบหรืออัปเดตแถวเฉพาะของตารางใน SQLite คุณต้องใช้ where clause เพื่อระบุเงื่อนไขเพื่อกรองแถวของตารางสำหรับการดำเนินการ

ตัวอย่างเช่นหากคุณมีคำสั่ง SELECT พร้อมด้วย where clause ระบบจะเรียกเฉพาะแถวที่ตรงตามเงื่อนไขที่ระบุเท่านั้น

ไวยากรณ์

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

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

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

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> SELECT * FROM CRICKETERS WHERE AGE > 35;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -----------
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

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

วัตถุ / คลาสของเคอร์เซอร์มีวิธีการทั้งหมดในการดำเนินการสืบค้นและดึงข้อมูล ฯลฯ วิธีการเคอร์เซอร์ของคลาสการเชื่อมต่อจะส่งคืนวัตถุเคอร์เซอร์

ดังนั้นในการสร้างตารางในฐานข้อมูล SQLite โดยใช้ python -

  • สร้างการเชื่อมต่อกับฐานข้อมูลโดยใช้เมธอด connect ()

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

  • ตอนนี้ดำเนินการคำสั่ง CREATE TABLE โดยใช้เมธอด execute () ของคลาส Cursor

ตัวอย่าง

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

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#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
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)''')

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

เอาต์พุต

[('Vinay', 'Battacharya', 20, 'M', 6000.0)]

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

คุณสามารถจัดเรียงผลลัพธ์ตามลำดับที่ต้องการ (จากน้อยไปมากหรือมากไปหาน้อย) โดยใช้ไฟล์ Order Byอนุประโยค ตามค่าเริ่มต้นอนุประโยคนี้จะเรียงลำดับผลลัพธ์จากน้อยไปหามากหากคุณต้องการจัดเรียงจากมากไปหาน้อยคุณต้องใช้ "DESC" อย่างชัดเจน

ไวยากรณ์

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

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

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> SELECT * FROM CRICKETERS ORDER BY AGE;
First_Name   Last_Name    Age    Place_Of_B   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
sqlite>

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

sqlite> SELECT * FROM CRICKETERS ORDER BY AGE, FIRST_NAME;
First_Name   Last_Name    Age    Place_Of_B   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
sqlite>

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

sqlite> SELECT * FROM CRICKETERS ORDER BY AGE DESC;
First_Name   Last_Name    Age    Place_Of_B   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
sqlite>

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
#Populating the table
cursor.execute(
   '''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
   ('Vinay', 'Battacharya', 20, 'M', 6000), 
   ('Sharukh', 'Sheik', 25, 'M', 8300), 
   ('Sarmista', 'Sharma', 26, 'F', 10000),
   ('Tripthi', 'Mishra', 24, 'F', 6000)''')
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()

เอาต์พุต

[
   ('Vinay', 'Battacharya', 20, 'M', 6000, None),
   ('Tripthi', 'Mishra', 24, 'F', 6000, None),
   ('Sharukh', 'Sheik', 25, 'M', 8300, None),
   ('Sarmista', 'Sharma', 26, 'F', 10000, None),
   ('Ramya', 'Rama priya', 27, 'F', 9000, None)
]

การดำเนินการ UPDATE บนฐานข้อมูลใด ๆ หมายถึงการปรับเปลี่ยนค่าของระเบียนหนึ่งรายการหรือมากกว่าของตารางซึ่งมีอยู่แล้วในฐานข้อมูล คุณสามารถอัปเดตค่าของระเบียนที่มีอยู่ใน SQLite โดยใช้คำสั่ง UPDATE

ในการอัปเดตแถวเฉพาะคุณต้องใช้คำสั่ง WHERE ควบคู่ไปด้วย

ไวยากรณ์

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

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

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
sqlite>

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

sqlite> SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       45     Delhi        India
sqlite>

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

sqlite> UPDATE CRICKETERS SET AGE = AGE+1;
sqlite>

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

sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Shikhar      Dhawan       46     Delhi        India
Jonathan     Trott        39     CapeTown     SouthAfrica
Kumara       Sangakkara   42     Matale       Srilanka
Virat        Kohli        31     Delhi        India
Rohit        Sharma       33     Nagpur       India
sqlite>

การอัปเดตระเบียนที่มีอยู่โดยใช้ Python

ในการเพิ่มระเบียนลงในตารางที่มีอยู่ในฐานข้อมูล SQLite -

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

  • สร้างอ็อบเจ็กต์การเชื่อมต่อโดยใช้เมธอด connect () โดยส่งชื่อของฐานข้อมูลเป็นพารามิเตอร์ไป

  • cursor()วิธีการส่งคืนวัตถุเคอร์เซอร์ที่คุณสามารถสื่อสารกับ SQLite3 สร้างวัตถุเคอร์เซอร์โดยเรียกใช้เคอร์เซอร์ () วัตถุบนวัตถุการเชื่อมต่อ (สร้างด้านบน)

  • จากนั้นเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งคำสั่ง UPDATE เป็นพารามิเตอร์ไป

ตัวอย่าง

ทำตามตัวอย่าง Python สร้างตารางที่มีชื่อ EMPLOYEE แทรก 5 ระเบียนเข้าไปและเพิ่มอายุของพนักงานชายทั้งหมด 1 -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

#Inserting data
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
   ('Vinay', 'Battacharya', 20, 'M', 6000), 
   ('Sharukh', 'Sheik', 25, 'M', 8300), 
   ('Sarmista', 'Sharma', 26, 'F', 10000),
   ('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()

#Fetching all the rows before the update
print("Contents of the Employee table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
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: ")
cursor.execute('''SELECT * from EMPLOYEE''')
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), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]

ในการลบระเบียนจากตาราง SQLite คุณต้องใช้คำสั่ง DELETE FROM ในการลบระเบียนเฉพาะคุณต้องใช้ WHERE clause ควบคู่ไปด้วย

ไวยากรณ์

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

DELETE FROM table_name [WHERE Clause]

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
sqlite>

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

sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       46     Delhi        India
Jonathan     Trott        39     CapeTown     SouthAfrica
Virat        Kohli        31     Delhi        India
Rohit        Sharma       33     Nagpur       India
sqlite>

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

sqlite> DELETE FROM CRICKETERS;
sqlite>

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

sqlite> SELECT * FROM CRICKETERS;
sqlite>

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

ในการเพิ่มระเบียนลงในตารางที่มีอยู่ในฐานข้อมูล SQLite -

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

  • สร้างอ็อบเจ็กต์การเชื่อมต่อโดยใช้เมธอดconnect ()โดยส่งชื่อของฐานข้อมูลเป็นพารามิเตอร์ไป

  • cursor()วิธีการส่งคืนวัตถุเคอร์เซอร์ที่คุณสามารถสื่อสารกับ SQLite3 สร้างวัตถุเคอร์เซอร์โดยเรียกใช้เคอร์เซอร์ () วัตถุบนวัตถุการเชื่อมต่อ (สร้างด้านบน)

  • จากนั้นเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งไฟล์ DELETE คำสั่งเป็นพารามิเตอร์ของมัน

ตัวอย่าง

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

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#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), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Contents of the table after delete operation
[
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]

คุณสามารถลบทั้งตารางโดยใช้คำสั่ง DROP TABLE คุณต้องระบุชื่อของตารางที่คุณต้องการลบ

ไวยากรณ์

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

DROP TABLE table_name;

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, 
   Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
sqlite> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, 
   SEX CHAR(1), INCOME FLOAT
);
sqlite>

ตอนนี้ถ้าคุณตรวจสอบรายการตารางโดยใช้ไฟล์ .tables คำสั่งคุณสามารถดูตารางที่สร้างไว้ด้านบน (รายการ) เป็น -

sqlite> .tables
CRICKETERS EMPLOYEE
sqlite>

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

sqlite> DROP table employee;
sqlite>

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

sqlite> .tables
CRICKETERS
sqlite>

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

sqlite> DROP table employee;
Error: no such table: employee
sqlite>

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

sqlite> DROP table IF EXISTS employee;
sqlite>

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

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

ตัวอย่าง

ในการวางตารางจากฐานข้อมูล SQLite3 โดยใช้ python ให้เรียกใช้ไฟล์ execute() วิธีการบนวัตถุเคอร์เซอร์และส่งผ่านคำสั่ง drop เป็นพารามิเตอร์ไป

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

ในขณะที่เรียกระเบียนหากคุณต้องการ จำกัด ด้วยจำนวนเฉพาะคุณสามารถทำได้โดยใช้ประโยค LIMIT ของ SQLite

ไวยากรณ์

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

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

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

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

sqlite> SELECT * FROM CRICKETERS LIMIT 3;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

หากคุณต้องการ จำกัด ระเบียนโดยเริ่มจากระเบียนที่ n (ไม่ใช่ 1 st ) คุณสามารถทำได้โดยใช้ OFFSET ร่วมกับ LIMIT

sqlite> SELECT * FROM CRICKETERS LIMIT 3 OFFSET 2;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Kumara       Sangakkara   41     Matale       Srilanka
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
sqlite>

LIMIT Clause โดยใช้ Python

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

ตัวอย่าง

ตัวอย่าง python ต่อไปนี้จะดึงข้อมูลสองระเบียนแรกของตาราง EMPLOYEE โดยใช้ประโยค LIMIT

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

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

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

เอาต์พุต

[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0)
]

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

ตัวอย่าง

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

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

ให้เราสร้าง OdiStats อีกหนึ่งตารางที่อธิบายสถิติคริกเก็ตหนึ่งวันของผู้เล่นแต่ละคนในตาราง CRICKETERS

sqlite> CREATE TABLE ODIStats (
   First_Name VARCHAR(255),
   Matches INT,
   Runs INT,
   AVG FLOAT,
   Centuries INT,
   HalfCenturies INT
);
sqlite>

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

sqlite> 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      Indi     133      5518   17          27
Jonathan    Trott       Sout     68       2819   4           22
Kumara      Sangakkara  Sril     404      14234  25          93
Virat       Kohli       Indi     239      11520  43          54
Rohit       Sharma      Indi     218      8686   24          42
sqlite>

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

ต่อไปนี้ตัวอย่าง SQLite แสดงส่วนคำสั่ง JOIN โดยใช้ python -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

#Retrieving data
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')
]

คลาส sqlite3.Cursor เป็นอินสแตนซ์ที่คุณสามารถเรียกใช้เมธอดที่รันคำสั่ง SQLite ดึงข้อมูลจากชุดผลลัพธ์ของคิวรี คุณสามารถสร้างวัตถุเคอร์เซอร์โดยใช้เคอร์เซอร์ () วิธีการของวัตถุ / คลาสการเชื่อมต่อ

ตัวอย่าง

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

วิธีการ

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

วิธี คำอธิบาย
ดำเนินการ ()

รูทีนนี้รันคำสั่ง SQL คำสั่ง SQL อาจถูกกำหนดพารามิเตอร์ (เช่นตัวยึดแทนตัวอักษร SQL) โมดูล psycopg2 รองรับตัวยึดตำแหน่งโดยใช้เครื่องหมาย% s

ตัวอย่างเช่น cursor.execute ("insert into people values ​​(% s,% s)", (who, age))

ประหารชีวิต ()

รูทีนนี้เรียกใช้คำสั่ง SQL กับลำดับพารามิเตอร์หรือการแม็พทั้งหมดที่พบในลำดับ sql

fetchone ()

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

fetchmany ()

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

fetchall ()

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

คุณสมบัติ

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

วิธี คำอธิบาย
arraySize

นี่คือคุณสมบัติอ่าน / เขียนที่คุณสามารถกำหนดจำนวนแถวที่ส่งคืนโดยวิธีการ fetchmany ()

คำอธิบาย

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

lastrowid

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

rowcount

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

การเชื่อมต่อ

แอตทริบิวต์แบบอ่านอย่างเดียวนี้จัดเตรียมการเชื่อมต่อฐานข้อมูล SQLite ที่ใช้โดยวัตถุเคอร์เซอร์