Chuyển đến nội dung chính

Hướng dẫn MySQL trong Python: Bắt đầu

Trong hướng dẫn này, bạn sẽ học cách cài đặt MySQL, tạo cơ sở dữ liệu và tạo bảng, cùng nhiều nội dung khác.
Đã cập nhật 5 thg 10, 2026  · 13 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

MySQL là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) sử dụng mô hình máy khách - máy chủ. Điều này có nghĩa là máy tính ("client") muốn truy cập dữ liệu phải kết nối tới máy chủ RDBMS để thực hiện. 

Python, mặt khác, là một ngôn ngữ lập trình bậc cao, đa mục đích rất phổ biến. Nhà phát triển thường dùng để xây dựng website và phần mềm, tự động hóa tác vụ, và phân tích dữ liệu. Nó cũng có thể làm việc với nhiều cơ sở dữ liệu, bao gồm MySQL. Python hỗ trợ câu lệnh truy vấn dữ liệu, ngôn ngữ định nghĩa dữ liệu và thao tác dữ liệu. Hướng dẫn này sẽ chỉ bạn cách làm việc với MySQL trong Python. 

Bắt đầu với MySQL trong Python

Để dùng MySQL trong Python từ không gian làm việc DataCamp của bạn, bạn phải dùng tích hợp workspace để kết nối với cơ sở dữ liệu được lưu trữ sẵn. Chúng ta sẽ xây dựng cơ sở dữ liệu từ đầu, nên sẽ không dùng DataCamp workspace cho hướng dẫn này. 

Đây là hai bước bạn cần thực hiện để theo dõi hướng dẫn: 

  1. Cài đặt máy chủ MySQL để cung cấp các dịch vụ cần thiết để quản lý cơ sở dữ liệu. Bạn có thể tải và cài đặt từ trang web MySQL. 
  2. Cài đặt MySQL connector là một trình điều khiển Python giúp bạn tích hợp ứng dụng Python với cơ sở dữ liệu MySQL; có thể cài đặt đơn giản bằng pip (trình quản lý gói của Python).

Khi bạn đã cài đặt máy chủ MySQL: 

  1. Clone kho GitHub này về máy cục bộ – cách clone một kho trên Github.
  2. Tạo và kích hoạt môi trường ảo – tạo môi trường ảo. 
  3. Cài đặt các gói cần thiết bằng pip install -r requirements từ terminal.  
  4. Tạo tệp .env trong thư mục gốc.
    1. Lưu mật khẩu để xác thực người dùng của bạn với máy chủ MySQL vào biến có tên PASSWORD – Nếu bạn không đặt mật khẩu root, máy chủ sẽ không yêu cầu mật khẩu.  

Tuyên bố miễn trừ

Mỗi tệp trong kho mã đều có tiền tố là một số để biểu thị thứ tự trong hướng dẫn này.

Ví dụ,  04_data_insertion.py cho biết mô-đun nên được chạy thứ 4 (sau các mô-đun 01 - 03). Bạn cũng có thể chạy toàn bộ mã bằng cách chạy 00_execute_all.py.

Thiết lập kết nối

MySQL tuân theo mô hình máy chủ - máy khách; bất cứ khi nào máy khách muốn truy cập dữ liệu, nó phải kết nối tới RDBMS. 

Cách thiết lập kết nối với máy chủ là dùng phương thức connect() từ mô-đun mysql.connector…

import os

from mysql import connector
from dotenv import load_dotenv


load_dotenv()
PASSWORD = os.getenv("PASSWORD")

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD
    ) as database:
        print(database)
except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x00000188FA653970>
"""

Xem đầy đủ các đối số cho phương thức connect() trong tài liệu. 

Có ba điều cần lưu ý về đoạn mã này: 

  1. Xử lý ngoại lệ và lỗi: Thực hành tốt là xử lý lỗi khi thiết lập kết nối tới máy chủ MySQL. 
  2. Đóng kết nối: Chúng tôi dùng context manager, nên không cần đóng kết nối một cách tường minh bằng phương thức close(). Nói chung, kết nối phải được đóng sau khi bạn hoàn tất truy cập cơ sở dữ liệu để tránh lỗi không mong muốn. 
  3. Dữ liệu nhạy cảm: Dùng biến môi trường để ẩn thông tin nhạy cảm, vì chia sẻ thông tin này gây rủi ro bảo mật. 

Giờ đây bạn đã thiết lập kết nối giữa chương trình Python và máy chủ MySQL, bạn sẵn sàng kết nối tới một trong nhiều cơ sở dữ liệu có sẵn trên máy chủ. Hiện tại, chúng ta chưa có cái nào; nghĩa là chúng ta sẽ phải tạo cơ sở dữ liệu mới trong máy chủ. Hãy xem cách làm ở phần tiếp theo. 

Lưu ý: Bất cứ khi nào truy cập cơ sở dữ liệu, phải thiết lập kết nối với máy chủ. Ở các ví dụ mã sau, chúng tôi sẽ bỏ phần này để tránh lặp lại trong suốt hướng dẫn. Tuy nhiên, nó được bao gồm trong mã nguồn.

Tạo cơ sở dữ liệu mới trong MySQL với Python

Từ đây trở đi, bạn sẽ cần kỹ năng SQL; khóa học Giới thiệu về SQL của DataCamp là điểm khởi đầu tốt để bạn bắt kịp. 

Cách điển hình để tạo cơ sở dữ liệu trong MySQL như sau: 

CREATE DATABASE book_ratings;

Để thực hiện cùng truy vấn đó trong Python, bạn phải tạo một thể hiện của đối tượng cursor(). 

Từ đối tượng cursor(), bạn có thể truyền các câu lệnh SQL dưới dạng chuỗi vào phương thức execute(), phương thức này sẽ thực thi mã. 

Hãy tạo một cơ sở dữ liệu tên là "book_ratings…"

create_db = "CREATE DATABASE book_ratings"
with database.cursor() as cursor:
    cursor.execute(create_db)

Lưu ý: Chạy đoạn mã này nhiều lần sẽ báo lỗi thông báo cơ sở dữ liệu đã tồn tại.

Bạn có thể kiểm tra các cơ sở dữ liệu đang tồn tại trên máy chủ như sau:

show_existing_db = "SHOW DATABASES"

with database.cursor() as cursor: 
    cursor.execute(show_existing_db)
    for db in cursor:
        print(db)

"""
('book_ratings',)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)
"""

Đoạn mã trên in ra tên của tất cả cơ sở dữ liệu hiện có trong máy chủ MySQL của chúng ta. Có nhiều hơn một vì máy chủ MySQL tự động tạo các cơ sở dữ liệu để cung cấp quyền truy cập vào nhiều siêu dữ liệu cơ sở dữ liệu và thiết lập máy chủ.

Kết nối tới cơ sở dữ liệu hiện có

Giả sử bạn đã tạo cơ sở dữ liệu, nhưng chưa kết nối tới máy chủ; làm sao để kết nối trực tiếp vào cơ sở dữ liệu? 

Rất đơn giản. 

Truyền tên cơ sở dữ liệu làm đối số cho phương thức connect():

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD,
        database = "book_ratings"
    ) as database:
       
        print(database})

except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x0000016DD8C24970>
"""

Tạo bảng

Thông tin trong cơ sở dữ liệu được lưu trong bảng. Bảng chỉ là một định dạng dùng để lưu trữ một tập dữ liệu liên quan gồm các cột và hàng. 

Có thể có nhiều bảng trong một cơ sở dữ liệu, ngay cả khi chúng không liên quan tới nhau. Bạn cũng có thể có một cơ sở dữ liệu quan hệ chỉ chứa một bảng, như chúng ta sẽ minh họa trong phần này – mở rộng kiến thức về cơ sở dữ liệu quan hệ với khóa Giới thiệu Cơ sở dữ liệu Quan hệ trong SQL. 

Việc tạo bảng tương tự như những gì bạn đã thấy; 

  • Viết câu lệnh SQL dưới dạng chuỗi 
  • Truyền vào phương thức execute() của đối tượng cursor. 

Câu lệnh SQL trong trường hợp này là CREATE TABLE.

Hãy dùng điều này để tạo bảng cho sách:

create_books_table = """
CREATE TABLE books(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    author VARCHAR(100),
    genre VARCHAR(100),
    release_year YEAR(4)
)
"""
# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(create_books_table)
    existing_database.commit()

Ở dòng cuối của đoạn mã, bạn có thể để ý chúng ta dùng phương thức commit() trên đối tượng existing_database. Chúng ta phải làm vậy vì hành vi mặc định của MySQL Python connector là không tự động commit giao dịch. 

Bất cứ khi nào bạn sửa đổi dữ liệu của một bảng, bạn phải gọi phương thức commit() – tìm hiểu thêm về phương thức commit() trong tài liệu MySQL. 

Một vài điểm quan trọng khác trong mã gồm có: 

  • NOT NULL: Ràng buộc để buộc một cột không chấp nhận giá trị NULL. 
  • PRIMARY KEY: Giá trị duy nhất dùng để định danh các hàng cụ thể trong bảng. 
  • AUTO_INCREMENT: Tự động tạo số duy nhất cho các bản ghi mới chèn vào bảng. 

Chúng ta có thể kiểm tra xem schema đã được tạo đúng chưa bằng cách dùng câu lệnh DESCRIBE rồi in tất cả phần tử bằng phương thức fetchall() trên đối tượng cursor…

describe_books = "DESCRIBE books"
with existing_database.cursor() as cursor:
    cursor.execute(describe_books)
    books_schema = cursor.fetchall()
    for column in books_schema:
        print(column)

"""
('id', b'int', 'NO', 'PRI', None, 'auto_increment')
('title', b'varchar(100)', 'YES', '', None, '')
('author', b'varchar(100)', 'YES', '', None, '')
('genre', b'varchar(100)', 'YES', '', None, '')
('release_year', b'year', 'YES', '', None, '')
"""

Chèn dữ liệu

Ở các phần trước, chúng ta đã tạo một bảng tên books trong cơ sở dữ liệu book_ratings. Hiện tại, bảng này đang trống. Phần tiếp theo sẽ trình bày hai cách bạn có thể dùng để điền dữ liệu vào bảng. 

Chèn một bản ghi

Có thể có trường hợp bạn cần chèn một bản ghi duy nhất vào bảng. Dù điều này hiếm khi xảy ra ngoài thực tế, bạn vẫn có thể thực hiện như sau:

# INSERT SINGLE RECORD
insert_single_record = "INSERT INTO books (id, title, author, genre, release_year)\
    VALUES (%s, %s, %s, %s, %s)"
single_record = (
    "1", "Choose Yourself! Be Happy, Make Millions, Live the Dream", "James Altucher", "self-help", "2013"
    )

# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(insert_single_record, single_record)
    existing_database.commit()

Chèn nhiều bản ghi

Cách phổ biến hơn để chèn dữ liệu vào bảng là dùng phương thức executemany(operation_to_perform, seq_of_params) của đối tượng cursor; cách này cho phép bạn chèn nhiều bản ghi cùng lúc. 

Cấu trúc của thao tác muốn thực hiện vẫn giữ nguyên; chúng ta chỉ cập nhật dãy tham số. 

Mã sẽ trông như sau: 

multiple_records = [
    (
        "2",
        "Skip the Line: The 10,000 Experiments Rule and Other Surprising Advice for Reaching Your Goals",
        "James Altucher",
        "self-help",
        "2021"        
    ),
    (
        "3",
        "The Power of No: Because One Little Word Can Bring Health, Abundance, and Happiness",
        "James Altucher",
        "self-help",
        "2014"
    ),
    ]

with existing_database.cursor() as cursor:
    cursor.executemany(insert_multiple_records, multiple_records)
    existing_database.commit()

Truy vấn dữ liệu 

Câu lệnh SELECT được dùng để truy xuất các hàng được chọn từ một hoặc nhiều bảng trong cơ sở dữ liệu. Chúng ta có thể dùng SELECT theo hai cách: 

  1. Chọn các cột cụ thể từ một bảng.
select_specific_cols = "SELECT author, release_year FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_specific_cols)
  1. Trả về tất cả các cột bằng dấu hoa thị "*"
# Create cursor object
select_all_cols = "SELECT * FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_all_cols)

Sắp xếp và lọc dữ liệu 

Sắp xếp và lọc dữ liệu giúp bạn trả về các kết quả quan tâm bằng cách đưa ra tiêu chí cụ thể mà bản ghi cần đáp ứng. 

Dưới đây là một vài ví dụ: 

WHERE

Câu lệnh WHERE cho phép bạn lọc dữ liệu dựa trên một điều kiện xác định. 

Ví dụ, giả sử chúng ta muốn trích xuất tên tác giả và tiêu đề sách cho bất kỳ cuốn sách nào phát hành trước và bao gồm cả năm 2010: 

condition = "SELECT author, title FROM books WHERE release_year <= 2010"
with existing_database.cursor() as cursor:
    cursor.execute(condition)

ORDER BY

Chúng ta cũng có thể dùng câu lệnh ORDER BY để sắp xếp kết quả theo thứ tự tăng dần (ASC) hoặc giảm dần (DESC). Lưu ý chế độ mặc định luôn là tăng dần trừ khi bạn chỉ định khác. 

Dưới đây là cách sắp xếp dữ liệu theo năm phát hành giảm dần:

order_by_year = "SELECT * FROM books ORDER BY release_year DESC"
with existing_database.cursor() as cursor:
    cursor.execute(order_by_year)

LIMIT

Câu lệnh LIMIT cho phép bạn chỉ định số lượng bản ghi sẽ trả về trong tập kết quả.

# Create cursor object
define_limit = "SELECT * FROM books LIMIT 3"
with existing_database.cursor() as cursor:
    cursor.execute(define_limit)

Đoạn mã trên giới hạn số bản ghi trả về là ba. 

Cập nhật và Xóa dữ liệu

Sẽ có lúc dữ liệu thay đổi, không còn hữu ích, hoặc sai. Trong phần này, bạn sẽ học cách xử lý các trường hợp đó bằng cập nhật và xóa. 

UPDATE

Truy vấn UPDATE cho phép bạn thay đổi các giá trị hiện có trong một bảng mà không ảnh hưởng đến cấu trúc của nó. 

Ví dụ, bạn có thể cần cập nhật một bản ghi nếu ai đó đổi tên; Mã sẽ trông như sau:

update_query = """
UPDATE
    books
SET
    author = "Big J"
WHERE
    author = "James Altucher"
"""
with existing_database.cursor() as cursor:
    cursor.execute(update_query)
    existing_database.commit()

DELETE

Truy vấn DELETE cho phép bạn xóa một bản ghi khỏi bảng:

drop_record = "DELETE FROM books WHERE release_year <= 2000"
with existing_database.cursor() as cursor:
    cursor.execute(drop_record)
    existing_database.commit()

Trong đoạn mã này, chúng ta đã xóa tất cả bản ghi có năm phát hành nhỏ hơn hoặc bằng 2000. 

DROP TABLE

Câu lệnh DROP TABLE cho phép bạn xóa vĩnh viễn một bảng khỏi cơ sở dữ liệu. Thêm IF EXISTS giúp xử lý các trường hợp bạn không chắc bảng cần xóa có tồn tại hay không, nhưng hoàn toàn là tùy chọn. 

Hãy xóa bảng chúng ta đã tạo trong cơ sở dữ liệu book_ratings: 

drop_table = "DROP TABLE IF EXISTS books"
with existing_database.cursor() as cursor:
    cursor.execute(drop_table)
    existing_database.commit()

Kết luận

Trong hướng dẫn này, bạn đã học cách thiết lập kết nối với máy chủ MySQL trong Python, tạo cơ sở dữ liệu mới, kết nối tới cơ sở dữ liệu hiện có, tạo bảng và thực hiện nhiều thao tác truy vấn trên bảng MySQL từ Python.  

Hãy xem các tài nguyên sau để tiếp tục học:

Chủ đề
SQL
Khoa học Dữ liệu
Python

Khóa học SQL

Khóa học

Python nâng cao

4 giờ
1.4M
Nâng cao kỹ năng Khoa học dữ liệu của bạn bằng cách tạo trực quan hóa với Matplotlib và thao tác DataFrame bằng pandas.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm