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:
- Nhập thư viện:
import pymysql - Tạo kết nối: Sử dụng
pymysql.connect()với các tham số cấu hình. - Tạo con trỏ (cursor): Thực hiện truy vấn thông qua đối tượng cursor.
- Thực thi câu lệnh SQL: Dùng phương thức
execute(). - Xác nhận hoặc hoàn tác thay đổi: Gọi
commit()hoặcrollback(). - Đó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', ...}