1. Tạo bảng trong cơ sở dữ liệu với Python

Bảng hay table là tập hợp các dữ liệu liên quan được lưu trữ theo định dạng bảng trong cơ sở dữ liệu. Một đối tượng dữ liệu (hay bản còn gọi là bản ghi) trong bảng bao gồm cột và các hàng. Trong một cơ sở dữ liệu (database) có thể có 1 hoặc nhiều bảng khác nhau.

Trong Python, khi thao tác với hệ quản trị cơ sở dữ liệu MySQL. Chúng ta cũng có thể thực hiện tạo mới một bảng (Table) để lưu trữ các dữ liệu. Để tạo mới được một Table MySQL trong ngôn ngữ Python ta cần thực hiện hai bước:

  1. Kết nối Python tới MySQL bằng hàm mysql.connector.connect()
  2. Thực thi câu lệnh truy vấn tạo bảng trong một cơ sở dữ liệu MySQL: “CREATE TABLE table_name (column_name1 datatype1, column_name2 datatype2, column_nameN datatypeN)”. Trong đó:
    • table_name là tên bảng cần tạo.
    • column_name1, column_name2, column_nameN là tên các cột có trong bảng.
    • datatypeN, datatype2, datatypeN là các kiểu dữ liệu tương ứng với các cột.

Ví dụ dưới đây, thực hiện tạo mới một bảng có tên “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()
    # Thuc thi cau truy tao bang "tbl_user" trong co so du lieu "laptrinhtudau"
    mycursor.execute("CREATE TABLE tbl_user (id INT AUTO_INCREMENT PRIMARY KEY, HoTen VARCHAR(255), Tuoi INT, GioiTinh VARCHAR(255))")
    print("Tao bang thanh cong!")
except:# Truong hop co loi khi tao bang
    print("Tao bang khong thanh cong!")

Kết quả:

Tao bang thanh cong!

Giải thích câu lệnh truy vấn “CREATE TABLE tbl_user (id INT AUTO_INCREMENT PRIMARY KEY, HoTen VARCHAR(255), Tuoi INT, GioiTinh VARCHAR(255)”

  • CREATE TABLE tbl_user là tạo bảng có tên tbl_user.
  • id INT AUTO_INCREMENT PRIMARY KEY là tạo cột có tên “id” với kiểu INT, thuộc tính AUTO_INCREMENT sử dụng để cho phép giá trị của cột tự động tăng, ràng buộc PRIMARY KEY là khóa chính mang giá trị duy nhất cho mỗi bản ghi.
  • HoTen VARCHAR(255) là tạo cột có tên “HoTen” với kiểu VARCHAR – độ dài lớn nhất được sử dụng là 255 ký tự.
  • Tuoi INT là tạo cột có tên “Tuoi” với kiểu INT.
  • GioiTinh VARCHAR(255) là tạo cột có tên “GioiTinh” với kiểu VARCHAR – độ dài lớn nhất được sử dụng là 255 ký tự.

2. Lấy danh sách bảng trong cơ sở dữ liệu với Python

Trong một cơ sở dữ liệu, có thể tồn tại một hoặc nhiều bảng. Hệ quản trị cơ sở dữ liệu MySQL không cho phép chúng ta sử dụng hai bảng có trùng tên. Vì vậy việc lấy ra danh sách các bảng đã tồn tại để tránh việc chúng ta tạo ra các bảng trùng lặp trong cơ sở dữ liệu.

Bạn có thể kiểm tra xem một bảng có tồn tại hay không bằng cách liệt kê tất cả các bảng trong cơ sở dữ liệu của mình với câu lệnh “SHOW TABLES” 

import mysql.connector

# 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()

# Thuc thi cau truy van lay ra tat ca bang co trong co so du lieu "laptrinhtudau"
mycursor.execute("SHOW TABLES")

# Duyet qua ten cac bang co trong co so du lieu "laptrinhtudau"
print("Cac bang trong co so du lieu laptrinhtudau")
for x in mycursor:
  print(x)

Kết quả:

Cac bang trong co so du lieu laptrinhtudau
(‘tbl_user’,)

3. Xóa bảng trong cơ sở dữ liệu với Python

Xóa bảng trong cơ sở dữ liệu là việc loại bỏ một bảng ra khỏi cơ sở dữ liệu. Việc loại bỏ bảng (hay xóa bảng) trong cơ sở dữ liệu sẽ đồng nghĩa với việc xóa hết tất cả các bản ghi có trong bảng đó.

Việc xóa một bảng có trong cơ sở dữ liệu sử dụng ngôn ngữ Python cũng được thực hiện gần giống như việc tạo một bảng. Tuy nhiên câu lệnh truy vấn lúc này sẽ là “DROP TABLE table_name” (trong đó table_name là tên bảng cần xóa). Ví dụ dưới đây, xóa bảng “tbl_posts” có 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()
    # Thuc thi cau truy van xoa bang "tbl_posts" trong co so du lieu "laptrinhtudau"
    mycursor.execute("DROP TABLE tbl_posts")
    print("Xoa bang thanh cong!")
except:# Truong hop co loi khi xoa bang
    print("Xoa bang khong thanh cong!")

Kết quả:

Xoa bang thanh cong!

Chú ý: Khi thực hiện thao tác xóa một bảng trong cơ sở dữ liệu, ta cần kiểm tra chính xác tên bảng cần xóa để tránh xóa nhầm bảng. Ngoài ra, ta cần xem xét các bản ghi có tính quan trọng trong bản bị xóa và ta sẽ cần phải sao lưu lại các bản ghi đó.