1. SELECT bản ghi trong MySQL với Python

Câu lệnh SELECT được sử dụng để chọn (hay lấy ra) dữ liệu từ một bảng trong cơ sở dữ liệu. Dữ liệu trả về được lưu trữ trong một bảng kết quả, được gọi là tập kết quả.

Trong Python, để thực hiện nhập vào bản ghi mới cho bảng MySQL chúng ta cần thực hiện hai bước sau:

  1. Kết nối Python tới MySQL bằng hàm mysql.connector.connect().
  2. Thực hiện lấy ra dữ liệu từ một bảng thông qua câu truy vấn “SELECT column1, column2,…,columnN FROM table_name WHERE condition1, condition2” trong đó:
    • SELECT column1, column2,…,columnN là việc chọn ra tên các cột cần lấy giá trị. Nếu như bạn cần lấy tất cả các cột trong bảng khi đó hãy sữ dụng “SELECT *” để thay thế câu lệnh trên!
    • FROM table_name là tên bảng được chọn để lấy ra các bản ghi trong bảng đó.
    • WHERE condition1, condition2 là các điều kiện chọn ra bản ghi trong bảng

Ví dụ dưới đây, thực hiện lấy ra tất cả bản ghi có trong bảng “tbl_user” trong cơ sở dữ liệu có tên “laptrinhtudau” như sau:

import mysql.connector
try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )

    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van lay ra tat ca ban ghi trong bang "tbl_user"
    sql = "SELECT * FROM tbl_user"

    # Thuc thi cau truy van 
    mycursor.execute(sql)

    # Chuyen doi cac ban ghi vua lay ra thanh mot LIST
    myresult = mycursor.fetchall()
    
    # Duyet LIST ket qua
    for x in myresult:
        print(x)
except:# Truong hop co loi khi lay ra ban ghi trong bang
    print("Khong the lay ra ban ghi trong bang!")

Kết quả:

(1, ‘Chu Minh Nam’, 20, ‘nam’)
(2, ‘Tran Ngoc Ha’, 20, ‘nu’)
(3, ‘Phung Thai Son’, 20, ‘nam’)
(4, ‘Nguyen Tri Thanh’, 19, ‘nam’)
(5, ‘Chu Quang Huy’, 18, ‘nam’)
(6, ‘Chu Thi Minh Anh’, 21, ‘nu’)
(7, ‘Nguyen Phuong Thao’, 21, ‘nu’)

Lưu ý: Sử dụng hàm fetchall() để thực hiện tìm nạp tất cả các bản ghi từ câu lệnh truy vấn và chuyển đổi các bản ghi này sang kiểu LIST trong Python. Khi đó ta có thể thao tác duyệt một LIST để hiển thị các kết quả!

Chúng ta có thể lấy ra dữ liệu có trong các trường: id, HoTen, Tuoi, GioiTinh bằng cách sử dụng vòng lặp For như bên dưới để thay cho vòng lặp For bên trên!

# Duyet LIST ket qua
for x in myresult:
    print(x[0]) # Lay ra id tat ca ban ghi
    print(x[1]) # Lay ra HoTen tat ca ban ghi
    print(x[2]) # Lay ra Tuoi tat ca ban ghi
    print(x[3]) # Lay ra GioiTinh tat ca ban ghi

2. SELECT bản ghi theo cột trong MySQL với Python

Ở phần trên, chúng ta đã biết cách lấy ra tất cả bản ghi trong tất cả các cột thông qua câu lệnh SELECT * – giả sử trong một số trường hợp nhất định việc lấy ra dữ liệu chỉ cần thực hiện trong một vài cột có trong bảng. Khi đó ta sẽ thay thế câu lệnh “SELECT *” bằng câu lệnh “SELECT column1, column2,…,columnN”.

Ví dụ dưới đây, chúng tôi sẽ chỉ lấy ra các cột có tên: HoTen, Tuoi thuộc bảng “tbl_user” trong cơ sở dữ liệu “laptrinhtudau” như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )

    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van lay ra cot HoTen, Tuoi trong bang "tbl_user"
    sql = "SELECT HoTen, Tuoi FROM tbl_user"

    # Thuc thi cau truy van 
    mycursor.execute(sql)

    # Chuyen doi cac ban ghi vua lay ra thanh mot LIST
    myresult = mycursor.fetchall()
    
    # Duyet LIST ket qua
    for x in myresult:
        print(x)
except:# Truong hop co loi khi lay ra ban ghi trong bang
    print("Khong the lay ra ban ghi trong bang!")

Kết quả:

(‘Chu Minh Nam’, 20)
(‘Tran Ngoc Ha’, 20)
(‘Phung Thai Son’, 20)
(‘Nguyen Tri Thanh’, 19)
(‘Chu Quang Huy’, 18)
(‘Chu Thi Minh Anh’, 21)
(‘Nguyen Phuong Thao’, 21)

Hoặc một cách khác đó là, chúng ta sẽ lấy ra tất cả các cột có trong bảng “tbl_user” bằng câu lệnh SELECT * , tuy nhiên trong vòng lặp For chúng ta chỉ hiển thị ra các cột chứa dữ liệu là: HoTen, Tuoi bằng cách truy cập chỉ số như bên dưới:

Câu lệnh SQL sẽ thay đổi như bên dưới:

sql = SELECT * FROM tbl_user

Vòng lặp For sẽ thay đổi như bên dưới:

# Duyet LIST ket qua
for x in myresult:
    print(x[1]) # Lay ra HoTen tat ca ban ghi
    print(x[2]) # Lay ra Tuoi tat ca ban ghi

3. Hàm fetchone() trong Python

Nếu như bạn chỉ cần lấy ra một bản ghi trong câu lệnh truy vấn SELECT. Khi đó hàm fetchone() sẽ giúp ta thực hiện việc này. Phương thức fetchone() sẽ trả về bản ghi đầu tiên trong tập các kết quả được trả về.

Ví dụ dưới đây, sử dụng hàm fetchone() để lấy ra bản ghi đầu tiên trong câu lệnh “SELECT * FROM tbl_user” – câu lệnh truy vấn lấy toàn bộ bản ghi có trong bảng “tbl_user” như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van lay ra tat ca ban ghi trong bang "tbl_user"
    sql = "SELECT * FROM tbl_user"

    # Thuc thi cau truy van 
    mycursor.execute(sql)
    # Lay ra ban ghi dau tien trong ket qua
    myresult = mycursor.fetchone()
    # Hien thi ket qua
    print(myresult)
except:# Truong hop co loi khi lay ra ban ghi trong bang
    print("Khong the lay ra ban ghi trong bang!")

Kết quả:

(1, ‘Chu Minh Nam’, 20, ‘nam’)