Python MySQL

Category: Python

Python MySQL Connector là trình điều khiển Python giúp tích hợp Python và MySQL. Thư viện Python MySQL này cho phép chuyển đổi giữa các kiểu dữ liệu Python và MySQL. API MySQL Connector được triển khai bằng Python thuần túy và không yêu cầu bất kỳ thư viện của bên thứ ba nào. 

Hướng dẫn Python MySQL này sẽ giúp bạn tìm hiểu cách sử dụng MySQL với Python từ cơ bản đến nâng cao, bao gồm tất cả các hàm và truy vấn cần thiết được giải thích chi tiết với sự trợ giúp của các ví dụ Python MySQL hay. Vậy, chúng ta hãy bắt đầu nhé.

Cài đặt

Để cài đặt mô-đun Python-mysql-connector , người dùng phải có Python và PIP được cài đặt sẵn trên hệ thống của mình. Nếu Python và pip đã được cài đặt, hãy nhập lệnh bên dưới vào terminal.

pip3 install  mysql-connector-python

Lưu ý: Nếu không có Python, hãy xem bài viết Cách cài đặt Python trên WindowsLinux ? và làm theo hướng dẫn được cung cấp.

Kết nối tới máy chủ MySQL

Chúng ta có thể kết nối với máy chủ MySQL bằng phương thức connect(). 

# nhập thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password"
)

print(dataBase)
 
# Ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

<mysql.connector.connection_cext.CMySQLConnection object at 0x7f73f0191d00>

Tạo cơ sở dữ liệu

Sau khi kết nối với máy chủ MySQL, chúng ta hãy xem cách tạo cơ sở dữ liệu MySQL bằng Python. Đối với điều này, trước tiên chúng ta sẽ tạo một đối tượng cursor() và sau đó sẽ truyền lệnh SQL dưới dạng chuỗi cho phương thức execute(). Lệnh SQL để tạo cơ sở dữ liệu là :

CREATE DATABASE DATABASE_NAME
# nhập thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()

# tạo cơ sở dữ liệu
cursorObject.execute("CREATE DATABASE gfg")

Đầu ra:

Tạo bảng

Để tạo bảng, chúng ta sẽ làm theo cách tiếp cận tương tự là viết các lệnh SQL dưới dạng chuỗi và sau đó truyền nó vào phương thức execute() của đối tượng con trỏ. Lệnh SQL để tạo bảng là 

CREATE TABLE
(
    column_name_1 column_Data_type,
    column_name_2 column_Data_type,
    :
    :
    column_name_n column_Data_type
);

Ví dụ: Tạo bảng MySQL bằng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# tạo bảng 
studentRecord = """CREATE TABLE STUDENT (
                   NAME  VARCHAR(20) NOT NULL,
                   BRANCH VARCHAR(50),
                   ROLL INT NOT NULL,
                   SECTION VARCHAR(5),
                   AGE INT
                   )"""
 
# bảng đã được tạo
cursorObject.execute(studentRecord) 
 
# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

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

Để chèn dữ liệu vào bảng MySQL, sử dụng  lệnh Insert into query.

Cú pháp:

INSERT INTO table_name (column_names) VALUES (data)

Ví dụ 1: Chèn một hàng đơn

# nhập thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
sql = "INSERT INTO STUDENT (NAME, BRANCH, ROLL, SECTION, AGE)\
VALUES (%s, %s, %s, %s, %s)"
val = ("Ram", "CSE", "85", "B", "19")
  
cursorObject.execute(sql, val)
dataBase.commit()
  
# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

Ví dụ 2: Chèn nhiều hàng

Để chèn nhiều giá trị cùng một lúc, phương thức executemany() được sử dụng. Phương thức này lặp qua chuỗi tham số, truyền tham số hiện tại cho phương thức execute.

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
sql = "INSERT INTO STUDENT (NAME, BRANCH, ROLL, SECTION, AGE)\
VALUES (%s, %s, %s, %s, %s)"

# danh sách các giá trị cần chèn vào bảng
val = [("Nikhil", "CSE", "98", "A", "18"),
       ("Nisha", "CSE", "99", "A", "18"),
       ("Rohan", "MAE", "43", "B", "20"),
       ("Amit", "ECE", "24", "A", "21"),
       ("Anil", "MAE", "45", "B", "20"), 
       ("Megha", "ECE", "55", "A", "22"), 
       ("Sita", "CSE", "95", "A", "19")]
  
# thực thi nhiều lệnh chèn dữ liệu cùng lúc
cursorObject.executemany(sql, val)

# lưu các thay đổi vào cơ sở dữ liệu
dataBase.commit()
  
# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

Lấy dữ liệu

Chúng ta có thể sử dụng truy vấn select trên các bảng MySQL theo những cách sau -

  • Để chọn các cột thuộc tính cụ thể từ một bảng, chúng ta viết tên thuộc tính.

SELECT attr1, attr2 FROM table_name
  • Để chọn tất cả các cột thuộc tính từ một bảng, chúng ta sử dụng ký hiệu dấu hoa thị '*'.

SELECT * FROM table_name

Ví dụ: Chọn dữ liệu từ bảng MySQL bằng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# truy vấn để lấy tên và số báo danh từ bảng STUDENT
query = "SELECT NAME, ROLL FROM STUDENT"
cursorObject.execute(query)
  
# lấy tất cả các kết quả từ truy vấn
myresult = cursorObject.fetchall()
  
# duyệt qua và in từng dòng kết quả
for x in myresult:
    print(x)

# ngắt kết nối khỏi máy chủ
dataBase.close()


Đầu ra:

python mysql chọn truy vấn

Mệnh đề Where

Mệnh đề where được sử dụng trong cơ sở dữ liệu MySQL để lọc dữ liệu theo điều kiện yêu cầu. Bạn có thể lấy, xóa hoặc cập nhật một tập dữ liệu cụ thể trong cơ sở dữ liệu MySQL bằng cách sử dụng mệnh đề where.

Cú pháp:

SELECT column1, column2, …. columnN FROM [TABLE NAME] WHERE [CONDITION];

Ví dụ: Mệnh đề Where trong MySQL sử dụng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# truy vấn để lấy tất cả sinh viên có tuổi lớn hơn hoặc bằng 20
query = "SELECT * FROM STUDENT where AGE >=20"
cursorObject.execute(query)
  
# lấy tất cả các kết quả từ truy vấn
myresult = cursorObject.fetchall()
  
# duyệt và in từng dòng kết quả
for x in myresult:
    print(x)

# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

('Rohan', 'MAE', 43, 'B', 20)
('Amit', 'ECE', 24, 'A', 21)
('Anil', 'MAE', 45, 'B', 20)
('Megha', 'ECE', 55, 'A', 22)

Order By Clause

OrderBy được sử dụng để sắp xếp tập kết quả theo thứ tự tăng dần hoặc giảm dần. Theo mặc định, nó luôn theo thứ tự tăng dần trừ khi “DESC” được đề cập, sắp xếp theo thứ tự giảm dần. “ASC” cũng có thể được sử dụng để sắp xếp rõ ràng theo thứ tự tăng dần. Nhưng, nói chung là không thực hiện theo cách này vì mặc định đã thực hiện điều đó.

Cú pháp:

SELECT column1, column2
FROM table_name
ORDER BY column_name ASC|DESC;

Ví dụ: Mệnh đề Order By trong MySQL sử dụng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# truy vấn để lấy tất cả bản ghi trong bảng STUDENT và sắp xếp theo tên (NAME) giảm dần
query = "SELECT * FROM STUDENT ORDER BY NAME DESC"
cursorObject.execute(query)
  
# lấy tất cả các kết quả từ truy vấn
myresult = cursorObject.fetchall()
  
# duyệt và in từng dòng kết quả
for x in myresult:
    print(x)

# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

python mysql ordery bởi

Limit Clause

Mệnh đề Limit được sử dụng trong SQL để kiểm soát hoặc giới hạn số lượng bản ghi trong tập kết quả được trả về từ truy vấn được tạo. Theo mặc định, SQL đưa ra số lượng bản ghi bắt buộc bắt đầu từ trên cùng nhưng cho phép sử dụng từ khóa OFFSET. OFFSET cho phép bạn bắt đầu từ một hàng tùy chỉnh và lấy số lượng hàng kết quả bắt buộc.

Cú pháp:

SELECT * FROM tablename LIMIT limit;
SELECT * FROM tablename LIMIT limit OFFSET offset;

Ví dụ: Mệnh đề giới hạn trong MySQL sử dụng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# truy vấn để lấy 2 bản ghi bắt đầu từ bản ghi thứ 2 (bỏ qua 1 bản ghi đầu tiên)
query = "SELECT * FROM STUDENT LIMIT 2 OFFSET 1"
cursorObject.execute(query)
  
# lấy tất cả các kết quả từ truy vấn
myresult = cursorObject.fetchall()
  
# duyệt và in từng dòng kết quả
for x in myresult:
    print(x)

# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

('Nikhil', 'CSE', 98, 'A', 18)
('Nisha', 'CSE', 99, 'A', 18)

Cập nhật dữ liệu

Truy vấn cập nhật được sử dụng để thay đổi các giá trị hiện có trong cơ sở dữ liệu. Bằng cách sử dụng lệnh cập nhật, một giá trị cụ thể có thể được sửa hoặc cập nhật. Lệnh này chỉ ảnh hưởng đến dữ liệu chứ không ảnh hưởng đến cấu trúc của bảng. Ưu điểm cơ bản mà lệnh này cung cấp là giữ cho bảng chính xác.

Cú pháp:

UPDATE tablename
SET ="new value"
WHERE ="old value";

Ví dụ: Cập nhật bảng MySQL bằng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# truy vấn cập nhật: cập nhật AGE thành 23 cho sinh viên có tên là 'Ram'
query = "UPDATE STUDENT SET AGE = 23 WHERE Name ='Ram'"
cursorObject.execute(query)
dataBase.commit()  # lưu các thay đổi vào cơ sở dữ liệu

# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

python mysql cập nhật bảng

Xóa dữ liệu khỏi bảng

Chúng ta có thể sử dụng truy vấn Delete để xóa dữ liệu khỏi bảng trong MySQL.

Cú pháp:

DELETE FROM TABLE_NAME WHERE ATTRIBUTE_NAME = ATTRIBUTE_VALUE

Ví dụ: Xóa dữ liệu khỏi bảng MySQL bằng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# truy vấn xóa: xóa sinh viên có tên là 'Ram'
query = "DELETE FROM STUDENT WHERE NAME = 'Ram'"
cursorObject.execute(query)
dataBase.commit()  # lưu thay đổi vào cơ sở dữ liệu

# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

python mySQL xóa khỏi bảng

Drop Tables

Lệnh Drop ảnh hưởng đến cấu trúc của bảng chứ không phải dữ liệu. Lệnh này được sử dụng để xóa một bảng đã tồn tại. Đối với những trường hợp bạn không chắc chắn liệu bảng cần xóa có tồn tại hay không thì lệnh DROP TABLE IF EXISTS được sử dụng. Cả hai trường hợp sẽ được giải quyết trong các ví dụ sau.

Cú pháp:

DROP TABLE tablename;
DROP TABLE IF EXISTS tablename;

Đầu tiên, chúng ta hãy xem danh sách các bảng trong cơ sở dữ liệu của chúng ta.

python mysql thả bảng

Chúng ta có thể thấy có hai cái bàn dành cho học sinh, vậy hãy bỏ cái bàn thứ hai đi.

Ví dụ 1: Xóa bảng trong MySQL bằng Python

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# câu truy vấn xóa bảng STUDENT
query = "DROP TABLE Student;"

cursorObject.execute(query)
dataBase.commit()  # lưu thay đổi vào cơ sở dữ liệu

# ngắt kết nối khỏi máy chủ
dataBase.close()

Đầu ra:

python mysql thả bảng

Ví dụ 2: Xóa bảng nếu tồn tại

# nhập các thư viện cần thiết
import mysql.connector
 
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)

# chuẩn bị một đối tượng con trỏ
cursorObject = dataBase.cursor()
 
# câu truy vấn xóa bảng Employee nếu tồn tại
query = "DROP TABLE IF EXISTS Employee;"

cursorObject.execute(query)
dataBase.commit()  # lưu các thay đổi vào cơ sở dữ liệu

# ngắt kết nối khỏi máy chủ
dataBase.close()

Ví dụ trên sẽ không tạo ra bất kỳ lỗi và đầu ra nào vì chúng ta đã sử dụng truy vấn Drop Table if exists. Nếu chúng ta chỉ sử dụng Drop table Employee thì ProgrammingError: 1051 (42S02): Unknown table 'gfg.Employee' sẽ được đưa ra.

Published on Jun 23, 2025