Bài học này sẽ đề cập đến vấn đề kết nối cơ sở dữ liệu trong chương trình Python. Có thể nói rằng, việc kết nối một chương trình với một cơ sở dữ liệu được xem là một nhiệm vụ khó khăn trong bất kỳ ngôn ngữ lập trình nào. Nó được sử dụng để kết nối phần front-end của ứng dụng của bạn với phần cơ sở dữ liệu back-end. Python cùng với các native modules được tích hợp sẵn sẽ giúp cho việc kết nối chương trình với cơ sở dữ liệu trở nên dễ dàng hơn.

Để mang lại hiệu quả tốt hơn, trước khi đi vào bài học này, bạn nên có được những hiểu biết cơ bản về SQL.

Trong phần tiếp theo, chúng ta sẽ thực hiện kết nối cơ sở dữ liệu SQLite với Python. Bản thân Python đã có sẵn một native library – thư viện gốc dành cho SQLite. Chúng ta sẽ cùng tìm hiểu cách nó làm việc ngay sau đây:

1. Để sử dụng SQLite, chúng ta phải import sqlite3 vào project của mình.

2. Sau đó tạo ra một kết nối giữa chương trình và cơ sở dữ liệu SQLite bằng cách sử dụng phương thức connect() và truyền vào tên của cơ sở dữ liệu mà bạn muốn truy cập đến. Nếu đúng là có một file có tên như vậy, nó sẽ mở file đó ra. Nếu không thì, Python sẽ tạo ra một file mới với tên được cung cấp.

3. Sau đó, một cursor object (đối tượng con trỏ) sẽ được gọi, để có thể gửi các câu lệnh tới SQL. Cursor là một control structure (cấu trúc điều khiển) được sử dụng để duyệt (traverse) và tìm nạp (fetch) các bản ghi của cơ sở dữ liệu. Cursor có vai trò chính trong việc làm việc với Python. Chỉ cần sử dụng cái cursor object này, chúng ta có thể thực thi tất cả các câu lệnh SQLite.

4. Để tạo ra một bảng (table) trong cơ sở dữ liệu, chúng ta cần tạo ra một cursor object (đối tượng con trỏ) và ghi câu lệnh SQL vào trong nó. ví dụ câu lệnh SQL: 

sql_comm = ”SQL statement”

5. Tiếp theo, việc thực thi câu lệnh SQL là tương đối dễ dàng. Chúng ta sử dụng cursor object để gọi đến phương thức execute và truyền vào tên của câu lệnh sql làm tham số cho nó. Sau khi bạn đã thực hiện tất cả các thao tác trên, hãy lưu lại các thay đổi trên file bằng cách commit các thay đổi này, sau đó ngắt kết nối tới cơ sở dữ liệu.

Dưới đây là đoạn code Python ví dụ, mô tả cách tạo ra table mới, và thêm dữ liệu vào table này:

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

# Python code to demonstrate table creation and  
# insertions with SQL 
  
# importing module 
import sqlite3 
  
# connecting to the database  
connection = sqlite3.connect("myTable.db") 
  
# cursor  
crsr = connection.cursor() 
  
# SQL command to create a table in the database 
sql_command = """CREATE TABLE emp (  
staff_number INTEGER PRIMARY KEY,  
fname VARCHAR(20),  
lname VARCHAR(30),  
gender CHAR(1),  
joining DATE);"""
  
# execute the statement 
crsr.execute(sql_command) 
  
# SQL command to insert the data in the table 
sql_command = """INSERT INTO emp VALUES (23, "Rishabh", "Bansal", "M", "2014-03-28");"""
crsr.execute(sql_command) 
  
# another SQL command to insert the data in the table 
sql_command = """INSERT INTO emp VALUES (1, "Bill", "Gates", "M", "1980-10-28");"""
crsr.execute(sql_command) 
  
# To save the changes in the files. Never skip this.  
# If we skip this, nothing will be saved in the database. 
connection.commit() 
  
# close the connection 
connection.close() 

Như vậy, ở phần trên, chúng ta đã cùng tìm hiểu về cách để tạo ra một table (bảng) mới và thêm các hàng mới (các bản ghi – record) vào table trong cơ sở dữ liệu.

Tiếp theo, chúng ta sẽ tìm hiểu về cách tìm nạp dữ liệu cơ sở dữ liệu từ các bản ghi dữ liệu, việc này cũng đơn giản như khi chúng ta thêm dữ liệu mới vào table. Phương thức execute sẽ sử dụng câu lệnh SQL lấy tất cả dữ liệu của table là “Select * from table_name”, và sau đó tất cả dữ liệu của table có thể được tìm nạp vào trong một object dưới dạng danh sách của các danh sách (list of lists).

Dưới đây là đoạn code Python nhằm lấy dữ liệu từ cơ sở dữ liệu SQLite:


# Python code to demonstrate SQL to fetch data. 
  
# importing the module 
import sqlite3 
  
# connect withe the myTable database 
connection = sqlite3.connect("myTable.db") 
  
# cursor object 
crsr = connection.cursor() 
  
# execute the command to fetch all the data from the table emp 
crsr.execute("SELECT * FROM emp")  
  
# store all the fetched data in the ans variable 
ans = crsr.fetchall()  
  
# Since we have already selected all the data entries  
# using the "SELECT *" SQL command and stored them in  
# the ans variable, all we need to do now is to print  
# out the ans variable 
print(ans) 

Chúng ta cần lưu ý rằng cái file cơ sở dữ liệu được tạo sẽ nằm trong cùng một folder với file python. Nếu muốn thay đổi đường dẫn của file cơ sở dữ liệu này, hãy thay đổi đường dẫn trong khi mở nó.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

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!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!