Python SQLite - Chọn dữ liệu

Bạn có thể truy xuất dữ liệu từ bảng SQLite bằng truy vấn SELCT. Truy vấn / câu lệnh này trả về nội dung của quan hệ được chỉ định (bảng) ở dạng bảng và nó được gọi là tập kết quả.

Cú pháp

Sau đây là cú pháp của câu lệnh SELECT trong SQLite:

SELECT column1, column2, columnN FROM table_name;

Thí dụ

Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:

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

Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -

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>

Sau khi truy vấn SELECT truy xuất giá trị của các cột FIRST_NAME, LAST_NAME và COUNTRY từ bảng 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>

Như bạn quan sát, câu lệnh SELECT của cơ sở dữ liệu SQLite chỉ trả về các bản ghi của các bảng được chỉ định. Để nhận được đầu ra được định dạng, bạn cần đặtheadermode bằng cách sử dụng các lệnh tương ứng trước câu lệnh SELECT như hình dưới đây -

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           Srilanka
Virat      Kohli                India
Rohit      Sharma               India
sqlite>

Nếu bạn muốn truy xuất tất cả các cột của mỗi bản ghi, bạn cần thay thế tên của các cột bằng "*" như hình dưới đây -

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>

Trong SQLite theo mặc định, chiều rộng của các cột là 10 giá trị ngoài chiều rộng này được cắt nhỏ (quan sát cột quốc gia của hàng thứ 2 trong bảng trên). Bạn có thể đặt chiều rộng của mỗi cột thành giá trị bắt buộc bằng cách sử dụng.width trước khi truy xuất nội dung của bảng như hình dưới đây -

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>

Truy xuất dữ liệu bằng python

ĐỌC Hoạt động trên bất kỳ cơ sở dữ liệu nào có nghĩa là lấy một số thông tin hữu ích từ cơ sở dữ liệu. Bạn có thể tìm nạp dữ liệu từ MYSQL bằng phương thức fetch () được cung cấp bởi mô-đun python sqlite.

Lớp sqlite3.Cursor cung cấp ba phương thức cụ thể là fetchall (), fetchmany () và, fetchone () trong đó,

  • Phương thức fetchall () truy xuất tất cả các hàng trong tập kết quả của một truy vấn và trả về chúng dưới dạng danh sách các bộ giá trị. (Nếu chúng ta thực hiện điều này sau khi truy xuất một vài hàng, nó sẽ trả về những hàng còn lại).

  • Phương thức fetchone () tìm nạp hàng tiếp theo trong kết quả của một truy vấn và trả về nó dưới dạng một bộ giá trị.

  • Phương thức fetchmany () tương tự như fetchone () nhưng, nó truy xuất tập hợp các hàng tiếp theo trong tập kết quả của một truy vấn, thay vì một hàng.

Note - Tập kết quả là một đối tượng được trả về khi một đối tượng con trỏ được sử dụng để truy vấn một bảng.

Thí dụ

Ví dụ sau tìm nạp tất cả các hàng của bảng EMPLOYEE bằng cách sử dụng truy vấn SELECT và từ tập kết quả thu được ban đầu, chúng tôi đang truy xuất hàng đầu tiên bằng phương thức fetchone () và sau đó tìm nạp các hàng còn lại bằng phương thức fetchall ().

Chương trình Python sau đây cho thấy cách tìm nạp và hiển thị các bản ghi từ bảng COMPANY được tạo trong ví dụ trên.

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

Đầu ra

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