Skip to content

Hiển thị dữ liệu theo dạng bảng trong console

Image title

Bài viết này hướng dẫn thực hiện truy vấn SQL đối với cơ sở dữ liệu SQLite và hiển thị kết quả lên bảng được kẻ bằng các ký tự -| trong màn hình console.

Cập nhật: 25.01.2024



Cài đặt

PrettyTable là một thư viện của Python giúp hiển thị dữ liệu theo dạng bảng bằng ký tự ASCII, cụ thể là các ký tự -, |+.

Trước hết, ta cài đặt PrettyTable bằng pip.

python -m pip install -U prettytable

Tiếp theo, khai báo các thư viện.

1
2
3
import sqlite3
from prettytable import from_db_cursor
from pathlib import Path

Khởi tạo

Lấy đường dẫn của file SQLite, nằm cùng thư mục với chương trình này.

database_file = str(Path(__file__).parent) + '\\coffee_shop.sqlite3'

Kết nối cơ sở dữ liệu và khởi tạo cursor cho cơ sở dữ liệu.

connection = sqlite3.connect(database_file)
cursor = connection.cursor()

Thực thi câu truy vấn SQL.

sql = '''SELECT customer_id, customer_name, major
FROM customers
WHERE major = 'Vaccinologist'
ORDER BY customer_name
'''
cursor.execute(sql)

Hiển thị dữ liệu dạng bảng

Gán dữ liệu kết quả cho PrettyTable để kẻ bảng và in ra.

table = from_db_cursor(cursor)



print(table)

Ngoài ra, ta có thể tùy chỉnh căn trái hoặc căn phải cho các cột. Mặc định các cột đều được canh giữa. Ví dụ:

table.align['customer_name'] = 'l'
table.align['major'] = 'r'

Output trông như sau:

+-------------+-------------------------------------------------------+---------------+
| customer_id | customer_name                                         |         major |
+-------------+-------------------------------------------------------+---------------+
|    529907   | Dame Sarah Catherine Gilbert DBE (Oxford AstraZeneca) | Vaccinologist |
|    527825   | Hồ Nhân (Nanogen Nanocovax Vietnam)                   | Vaccinologist |
|    423534   | Ozlem Tureci (BioNTech Pfizer)                        | Vaccinologist |
|    198325   | Ugur Sahin (BioNTech Pfizer)                          | Vaccinologist |
+-------------+-------------------------------------------------------+---------------+

Nếu không muốn in ra, mà chỉ muốn lấy chuỗi của PrettyTable, ta dùng phương thức get_string(). Chuỗi trả về cũng giống như output trên.

mystring = table.get_string()

Toàn bộ chương trình¶

Code đầy đủ được đặt tại GitHub.