Cơ sở dữ liệu có cung cấp rất nhiều chức năng mà nhờ đó chúng ta có thể dễ dàng quản lý lượng lớn thông tin trên web và nhập, xuất dữ liệu khối lượng lớn qua một kiểu file điển hình, chẳng hạn như file text. SQL là một ngôn ngữ truy vấn rất phổ biến trong lĩnh vực cơ sở dữ liệu. Có rất nhiều websites sử dụng MySQL. SQLite là một phiên bản “gọn nhẹ”, hoạt động với cú pháp rất giống với SQL.
SQLite là một engine cơ sở dữ liệu SQL khép kín, có độ tin cậy cao, được nhúng vào trong nhiều nền tảng, đầy đủ tính năng, là một công cụ thuộc public-domain (miền công cộng). Nó là database engine được sử dụng nhiều nhất trong thế giới web.
Python có một thư viện để truy cập đến các cơ sở dữ liệu SQLite, được gọi là sqlite3, cung cấp khả năng làm việc với cơ sở dữ liệu này. Thư viện sqlite3 đã được tích hợp vào trong gói Python kể từ phiên bản 2.5.
Trong bài này, chúng ta sẽ cùng tìm hiểu về cách để truy vấn cơ sở dữ liệu bằng các câu lệnh như Update, Delete và cách để trực quan hóa dữ liệu thông qua các biểu đồ.
Nội dung chính
1. Thao tác Update và Delete trong cơ sở dữ liệu SQLite
Dưới đây là đoạn code Python mô tả thao tác Update bản ghi dữ liệu trong cơ sở dữ liệu SQLite:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# code for update operation
import sqlite3
# database name to be passed as parameter
conn = sqlite3.connect('mydatabase.db')
# update the student record
conn.execute("UPDATE Student SET name = 'Sam' where unix='B113059'")
conn.commit()
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT * FROM Student")
for row in cursor:
print row,
conn.close()
Kết quả in ra là:
Total number of rows updated : 1
(u'B113053', u'Geek', u'2017-01-11 13:53:39', 21.0),
(u'B113058', u'Saan', u'2017-01-11 13:53:39', 21.0),
(u'B113059', u'Sam', u'2017-01-11 13:53:39', 22.0)
Tiếp theo là ví dụ về thao tác Delete bản ghi dữ liệu trong cơ sở dữ liệu SQLite:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# code for delete operation
import sqlite3
# database name to be passed as parameter
conn = sqlite3.connect('mydatabase.db')
# delete student record from database
conn.execute("DELETE from Student where unix='B113058'")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT * FROM Student")
for row in cursor:
print row,
conn.close()
Kết quả in ra là:
Total number of rows deleted : 1
(u'B113053', u'Geek', u'2017-01-11 13:53:39', 21.0),
(u'B113059', u'Sam', u'2017-01-11 13:53:39', 22.0)
2. Insert dữ liệu do người dùng nhập vào, vào trong cơ sở dữ liệu SQLite
Trong ví dụ sau đây, chúng ta sẽ tìm hiểu về cách để Insert (thêm) các bản ghi dữ liệu mới, sử dụng dữ liệu do người dùng nhập vào, vào trong cơ sở dữ liệu SQLite:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# code for executing query using input data
import sqlite3
# creates a database in RAM
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("create table person (name, age, id)")
print ("Enter 5 students names:")
who = [raw_input() for i in range(5)]
print ("Enter their ages respectively:")
age = [int(raw_input()) for i in range(5)]
print ("Enter their ids respectively:")
p_id = [int(raw_input()) for i in range(5)]
n = len(who)
for i in range(n):
# This is the q-mark style:
cur.execute("insert into person values (?, ?, ?)", (who[i], age[i], p_id[i]))
# And this is the named style:
cur.execute("select * from person")
# Fetches all entries from table
print cur.fetchall()
Kết quả in ra là:
(u'Navin', 34, 113053)
(u'Basu', 42, 113058)
(u'Firoz', 65, 113059)
(u'Tim', 47, 113060)
(u'Varun', 54, 113061)
3. Trực quan hóa dữ liệu bằng các biểu đồ với SQLite
Chúng ta sẽ sử dụng thư viện matplotlib để trực quan hóa dữ liệu thành biểu đồ:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# graph visualization using matplotlib library
import matplotlib.pyplot as plt
def graph_data(p_id,age):
# plotting the points
plt.plot(p_id, age, color='yellow', linestyle='dashed', linewidth = 3,
marker='*', markerfacecolor='blue', markersize=12)
# naming the x axis
plt.xlabel('Persons Id')
# naming the y axis
plt.ylabel('Ages')
# plt.plot(p_id,age)
plt.show()
print ("Enter 5 students names:")
who = [raw_input() for i in range(5)]
print ("Enter their ages respectively:")
age = [int(raw_input()) for i in range(5)]
print ("Enter their ids respectively:")
p_id = [int(raw_input()) for i in range(5)]
# calling graph function
graph_data(p_id,age)
Theo cách này, chúng ta có thể thực hiện các thao tác như vậy bằng cách sử dụng truy vấn SQL để giao tiếp với Cơ sở dữ liệu và vẽ đồ thị nhằm biểu hiện rõ ràng được các đặc tính của nó.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!