MINH HỌA THỬ THÁCH (Cách truyền biến Python vào SQL)

Trong lập trình, khi muốn truyền một biến số từ Python vào câu lệnh SQL, chúng ta không nên cộng chuỗi trực tiếp (vì dễ bị lỗi và bị hacker tấn công qua lỗi SQL Injection).

Cách chuẩn nhất là chúng ta dùng dấu chấm hỏi ? làm "người đại diện" giữ chỗ trong câu lệnh SQL, sau đó truyền các biến Python vào dưới dạng một Tuple (biến_1, biến_2).

Hãy tạo file bai2_thuthach.py và gõ đoạn code tương tác này nhé:

import sqlite3

# 1. Kết nối đến database kho báu đã có
ket_noi = sqlite3.connect("kho_bau.db")
nguoi_tho = ket_noi.cursor()

print("=== CHƯƠNG TRÌNH THÊM BẢO VẬT CỦA HAI BỐ CON ===")

# 2. Dùng lệnh input() để bố tự gõ từ bàn phím (Bài 2)
ten_moi = input("Bố hãy nhập TÊN món bảo vật mới: ")
so_luong_moi = int(input("Bố hãy nhập SỐ LƯỢNG của món đồ này: "))
gia_tri_moi = int(input("Bố hãy nhập GIÁ TRỊ (tiền vàng): "))

# 3. Phép thuật INSERT sử dụng dấu hỏi chấm '?' làm người giữ chỗ
cau_lenh_sql = """
INSERT INTO kho_bau (ten_vat_pham, so_luong, gia_tri) 
VALUES (?, ?, ?)
"""

# Truyền các biến Python vào đúng thứ tự của các dấu hỏi chấm
nguoi_tho.execute(cau_lenh_sql, (ten_moi, so_luong_moi, gia_tri_moi))

# 4. Lưu lại và đóng cửa tủ
ket_noi.commit()
print(f"\n🎉 Úm ba la! Đã cất thành công món '{ten_moi}' vào tủ dữ liệu!")

ket_noi.close()

🔍 "Nghiệm thu" sản phẩm :

  1. Hãy Run file code này.

  2. Màn hình hiện lên dòng chữ đòi nhập, hãy gõ thử:

    • Tên: Rìu Thần Thor

    • Số lượng: 1

    • Giá trị: 999

  3. Sau khi màn hình báo thành công, hãy mở DB Browser for SQLite lên, bấm nút Refresh (F5) ở tab Browse Data.

Chúng ta sẽ thấy món quà Rìu Thần Thor  đã hiên ngang nằm ở dòng tiếp theo trong bảng dữ liệu với một số ID mới tinh! Cách này giúp ta thấy code mình viết đã thực sự "sống" và tương tác được với con người