Sử dụng cơ bản mô-đun PyMySQL trong Python

Cài đặt mô-đun PyMySQL

Để làm việc với cơ sở dữ liệu MySQL trong Python, bạn cần cài đặt thư viện PyMySQL. Có thể thực hiện bằng một trong các cách sau:

  • Sử dụng pip: pip install pymysql
  • Trong PyCharm: Mở Settings → Project → Python Interpreter → Tìm và cài đặt PyMySQL từ danh sách.

Kết nối cơ sở dữ liệu và thao tác dữ liệu

Quy trình làm việc với MySQL thông qua PyMySQL bao gồm các bước chính sau:

  1. Nhập thư viện: import pymysql
  2. Tạo kết nối: Sử dụng pymysql.connect() với các tham số cấu hình.
  3. Tạo con trỏ (cursor): Thực hiện truy vấn thông qua đối tượng cursor.
  4. Thực thi câu lệnh SQL: Dùng phương thức execute().
  5. Xác nhận hoặc hoàn tác thay đổi: Gọi commit() hoặc rollback().
  6. Đóng kết nối: Giải phóng tài nguyên bằng close().

Chi tiết tham số kết nối

Tham số Mô tả Giá trị ví dụ
host Địa chỉ máy chủ MySQL '127.0.0.1' hoặc 'localhost'
port Cổng kết nối 3306
database Tên cơ sở dữ liệu 'ftp'
user Tên đăng nhập 'root'
password Mật khẩu '318'
charset Bảng mã ký tự 'utf8mb4' (khuyến nghị)

Chèn dữ liệu vào bảng

Ví dụ dưới đây chèn một bản ghi vào bảng employee:

import pymysql

# Tạo kết nối
conn = pymysql.connect(
    host='127.0.0.1',
    user='root',
    password='318',
    database='ftp',
    charset='utf8mb4'
)

try:
    # Tạo con trỏ
    cursor = conn.cursor()
    
    # Câu lệnh chèn dữ liệu
    sql = "INSERT INTO employee (emp_name, sex, age, hire_date) VALUES (%s, %s, %s, %s)"
    values = ("Lâm Anh", "male", 35, "2020-01-15")
    
    # Thực thi
    cursor.execute(sql, values)
    
    # Xác nhận thay đổi
    conn.commit()
    print("Dữ liệu đã được chèn thành công.")
except Exception as e:
    # Hoàn tác nếu có lỗi
    conn.rollback()
    print(f"Lỗi khi chèn dữ liệu: {e}")
finally:
    # Đảm bảo đóng kết nối
    cursor.close()
    conn.close()

Truy vấn và lấy kết quả

Sau khi chèn, bạn có thể kiểm tra dữ liệu bằng các phương thức lấy kết quả:

Lấy một dòng: fetchone()

cursor.execute("SELECT * FROM employee WHERE id > 10")
result = cursor.fetchone()
print(result)  # Kết quả dạng tuple

Lấy nhiều dòng: fetchmany(n)

results = cursor.fetchmany(3)
for row in results:
    print(row)

Lấy tất cả dòng: fetchall()

all_results = cursor.fetchall()
for row in all_results:
    print(row)

Hiển thị kết quả dưới dạng từ điển

Mặc định, kết quả trả về là tuple — gây khó khăn khi xác định trường nào ứng với giá trị nào. Để cải thiện trải nghiệm, sử dụng DictCursor:

import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    user='root',
    password='318',
    database='ftp',
    charset='utf8mb4'
)

# Sử dụng DictCursor để trả về kết quả dạng dictionary
cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT * FROM employee WHERE id > 10")

row = cursor.fetchone()
if row:
    print(f"Họ tên: {row['emp_name']}, Giới tính: {row['sex']}, Tuổi: {row['age']}")
    print("Toàn bộ bản ghi:", row)

cursor.close()
conn.close()

Kết quả sẽ hiển thị rõ ràng hơn, ví dụ:

Họ tên: Lâm Anh, Giới tính: male, Tuổi: 35
Toàn bộ bản ghi: {'id': 21, 'emp_name': 'Lâm Anh', 'sex': 'male', ...}

Thẻ: PyMySQL mysql python-database dictcursor sql

Đăng vào ngày 12 tháng 6 lúc 02:20