Sunday, January 19, 2025

[Python] Lesson 65 – Mysql module

-

mysql module là một module của Python cho phép kết nối và tương tác với cơ sở dữ liệu MySQL. Nó cung cấp các phương thức và lớp để thực hiện các thao tác như thêm, xóa, sửa và truy xuất dữ liệu từ cơ sở dữ liệu MySQL.

Để cài đặt mysql module, ta có thể sử dụng pip (package installer for Python) bằng cách mở terminal/command prompt và chạy lệnh sau:

pip install mysql-connector-python

Sau khi cài đặt, ta có thể khai báo module bằng cú pháp sau:

import mysql.connector

Sau khi đã khai báo module, ta có thể kết nối và tương tác với cơ sở dữ liệu MySQL bằng các phương thức và lớp được cung cấp bởi mysql module.

Ví dụ 1:

Ví dụ về việc tạo kết nối và truy xuất dữ liệu từ cơ sở dữ liệu:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Trong đó, ta sử dụng phương thức connect để tạo kết nối đến cơ sở dữ liệu MySQL, cursor để thực hiện các thao tác với cơ sở dữ liệu và execute để thực hiện truy vấn SQL. Kết quả được lưu trữ trong biến myresult và được in ra màn hình bằng vòng lặp for.

Ví dụ 2:

Giả sử chúng ta có một cơ sở dữ liệu MySQL đơn giản với tên là “testdb” và bảng “employees” chứa thông tin về các nhân viên, bao gồm các trường “id”, “name” và “salary”.

Bây giờ, chúng ta muốn kết nối đến cơ sở dữ liệu này và lấy thông tin về tất cả các nhân viên. Để thực hiện điều này, chúng ta có thể sử dụng mysql module như sau:

import mysql.connector

# Tạo kết nối đến cơ sở dữ liệu
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="testdb"
)

# Tạo đối tượng cursor để thực hiện các truy vấn SQL
mycursor = mydb.cursor()

# Thực hiện truy vấn SQL để lấy thông tin về tất cả các nhân viên
mycursor.execute("SELECT * FROM employees")

# Lấy kết quả truy vấn và in ra màn hình
myresult = mycursor.fetchall()
for employee in myresult:
    print(employee)

Trong ví dụ này, chúng ta sử dụng phương thức mysql.connector.connect() để tạo kết nối đến cơ sở dữ liệu MySQL. Sau đó, chúng ta tạo một đối tượng cursor bằng cách sử dụng phương thức cursor() của đối tượng kết nối. Chúng ta thực hiện truy vấn SQL bằng phương thức execute() của đối tượng cursor và lấy kết quả truy vấn bằng phương thức fetchall(). Cuối cùng, chúng ta in ra màn hình thông tin về tất cả các nhân viên bằng vòng lặp for.

Ví dụ 3:

Ví dụ sau đây mô tả cách sử dụng mysql module trong Python để thực hiện truy vấn MySQL trên hệ thống Linux:

import mysql.connector

# Thiết lập kết nối tới cơ sở dữ liệu MySQL
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# Tạo đối tượng cursor để thực hiện truy vấn
mycursor = mydb.cursor()

# Thực hiện truy vấn SQL để lấy tất cả các bản ghi trong bảng customers
mycursor.execute("SELECT * FROM customers")

# Lấy tất cả các bản ghi từ đối tượng cursor
myresult = mycursor.fetchall()

# Hiển thị tất cả các bản ghi
for x in myresult:
  print(x)

Trong ví dụ này, mysql.connector được sử dụng để kết nối đến cơ sở dữ liệu MySQL, sau đó đối tượng cursor được tạo ra để thực hiện các truy vấn SQL. Ở đây, truy vấn SQL được sử dụng để lấy tất cả các bản ghi từ bảng customers và đối tượng fetchall() được sử dụng để lấy tất cả các bản ghi được trả về từ truy vấn. Cuối cùng, các bản ghi được hiển thị bằng cách sử dụng một vòng lặp for để in từng bản ghi một.

Ví dụ 4:

Để thực hiện insert dữ liệu vào MySQL bằng module mysql.connector trong Python, ta có thể sử dụng method execute() của đối tượng cursor và chuỗi SQL có chứa câu lệnh INSERT INTO để thêm dữ liệu vào bảng.

Ví dụ, giả sử ta có một bảng employees với các trường id, name, age, và salary. Để thêm một bản ghi mới vào bảng, ta có thể sử dụng cú pháp sau:

import mysql.connector

# Kết nối đến database
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# Tạo đối tượng cursor để thao tác với database
mycursor = mydb.cursor()

# Chuỗi SQL thêm dữ liệu vào bảng
sql = "INSERT INTO employees (name, age, salary) VALUES (%s, %s, %s)"
values = ("John", 30, 5000)

# Thực thi câu lệnh SQL với các tham số được truyền vào
mycursor.execute(sql, values)

# Lưu các thay đổi vào database
mydb.commit()

print(mycursor.rowcount, "record inserted.")

Trong ví dụ trên, ta đã kết nối đến database và tạo một đối tượng cursor. Sau đó, ta đã khai báo chuỗi SQL có chứa câu lệnh INSERT INTO với các giá trị được truyền vào thông qua biến values. Cuối cùng, ta thực thi câu lệnh SQL bằng method execute() của đối tượng cursor và lưu các thay đổi vào database bằng method commit().

Ví dụ 5:

Đây là một ví dụ về cách cập nhật dữ liệu trong MySQL bằng Python và MySQL Connector.

Giả sử chúng ta có bảng employees trong cơ sở dữ liệu company với các cột id, namesalary. Bây giờ, chúng ta muốn cập nhật lương của nhân viên có id là 1 thành 5000.

Đầu tiên, ta cần kết nối tới cơ sở dữ liệu bằng MySQL Connector:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="company"
)

Sau đó, ta có thể tạo một đối tượng cursor để thực thi các câu lệnh SQL:

mycursor = mydb.cursor()

Bây giờ, ta có thể sử dụng phương thức execute() để thực thi câu lệnh SQL cập nhật:

sql = "UPDATE employees SET salary = 5000 WHERE id = 1"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "record(s) affected")

Ở đây, câu lệnh SQL UPDATE sẽ cập nhật giá trị của cột salary thành 5000 cho nhân viên có id là 1. Sau đó, ta gọi phương thức commit() để lưu các thay đổi vào cơ sở dữ liệu.

Cuối cùng, ta sử dụng thuộc tính rowcount để đếm số bản ghi bị ảnh hưởng bởi câu lệnh SQL.

Ví dụ 6:

Để thực hiện xóa dữ liệu từ một bảng trong MySQL bằng Python và MySQL Connector, bạn có thể sử dụng method execute() của đối tượng cursor kết hợp với câu lệnh SQL DELETE.

Dưới đây là một ví dụ về cách xóa một bản ghi trong bảng “employees” với id = 1:

import mysql.connector

# Kết nối đến database
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# Tạo đối tượng cursor
mycursor = mydb.cursor()

# Câu lệnh SQL xóa bản ghi
sql = "DELETE FROM employees WHERE id = 1"

# Thực thi câu lệnh SQL
mycursor.execute(sql)

# Lưu lại các thay đổi vào database
mydb.commit()

print(mycursor.rowcount, "record(s) deleted")

Trong đoạn code trên, chúng ta sử dụng câu lệnh SQL DELETE để xóa bản ghi có id = 1 trong bảng “employees”. Sau đó, chúng ta sử dụng method execute() của đối tượng cursor để thực thi câu lệnh SQL. Sau đó, chúng ta sử dụng method commit() để lưu lại các thay đổi vào database. Cuối cùng, chúng ta in ra số lượng bản ghi đã bị xóa sử dụng thuộc tính rowcount của đối tượng cursor.

Ví dụ 7:

Dưới đây là một ví dụ về việc tạo một lớp trong Python để thực hiện các thao tác CRUD (Create, Read, Update, Delete) trên cơ sở dữ liệu MySQL bằng MySQL Connector.

Để thực hiện các thao tác này, chúng ta cần cài đặt MySQL Connector bằng câu lệnh pip install mysql-connector-python.

import mysql.connector

class MySQLDatabase:
    
    def __init__(self, host, user, password, database):
        self.host = host
        self.user = user
        self.password = password
        self.database = database
        
        self.conn = mysql.connector.connect(
            host=self.host,
            user=self.user,
            password=self.password,
            database=self.database
        )
        
        self.cursor = self.conn.cursor()
        
    def select(self, query, params=None):
        self.cursor.execute(query, params)
        result = self.cursor.fetchall()
        return result
        
    def insert(self, query, params=None):
        self.cursor.execute(query, params)
        self.conn.commit()
        
    def update(self, query, params=None):
        self.cursor.execute(query, params)
        self.conn.commit()
        
    def delete(self, query, params=None):
        self.cursor.execute(query, params)
        self.conn.commit()

Lớp MySQLDatabase có các phương thức CRUD cơ bản, bao gồm:

  • Phương thức __init__() dùng để kết nối đến cơ sở dữ liệu với các thông số host, user, password và database.
  • Phương thức select() dùng để thực hiện truy vấn SELECT và trả về kết quả.
  • Phương thức insert() dùng để thực hiện truy vấn INSERT và lưu thay đổi vào cơ sở dữ liệu.
  • Phương thức update() dùng để thực hiện truy vấn UPDATE và lưu thay đổi vào cơ sở dữ liệu.
  • Phương thức delete() dùng để thực hiện truy vấn DELETE và lưu thay đổi vào cơ sở dữ liệu.

Các phương thức này đều nhận vào hai tham số: query là câu truy vấn SQL, params là một tuple chứa các tham số truyền vào trong câu truy vấn (nếu có).

Ví dụ sử dụng lớp MySQLDatabase để thực hiện các thao tác CRUD:

db = MySQLDatabase('localhost', 'root', 'password', 'mydatabase')

# Select
result = db.select('SELECT * FROM mytable')
print(result)

# Insert
query = 'INSERT INTO mytable (name, age) VALUES (%s, %s)'
params = ('John', 30)
db.insert(query, params)

# Update
query = 'UPDATE mytable SET age=%s WHERE name=%s'
params = (35, 'John')
db.update(query, params)

# Delete
query = 'DELETE FROM mytable WHERE name=%s'
params = ('John',)
db.delete(query, params)

Đoạn code trên là một ví dụ về cách sử dụng các hàm select, insert, update, và delete trong module mysql.connector để thực hiện các thao tác với CSDL MySQL.

Trong đó, đoạn db = MySQLDatabase('localhost', 'root', 'password', 'mydatabase') được sử dụng để khởi tạo một đối tượng MySQLDatabase với các thông số đầu vào là host, user, password, và database name.

Các hàm select, insert, update, và delete trong module mysql.connector được gọi thông qua đối tượng db đã khởi tạo. Ví dụ:

  • Hàm select được sử dụng để truy vấn dữ liệu từ bảng mytable và trả về kết quả. Kết quả này được in ra màn hình bằng lệnh print(result).
  • Hàm insert được sử dụng để thêm một bản ghi mới vào bảng mytable với thông tin là ('John', 30). Thông tin này được đưa vào câu truy vấn SQL bằng cách sử dụng biến queryparams.
  • Hàm update được sử dụng để cập nhật thông tin trên bảng mytable. Cụ thể là cập nhật trường age của bản ghi có tên là John thành 35.
  • Hàm delete được sử dụng để xóa bản ghi có tên là John khỏi bảng mytable.

Tất cả các câu truy vấn SQL trong ví dụ này đều được định nghĩa bằng chuỗi ký tự, sau đó được truyền vào các hàm insert, update, và delete dưới dạng tham số. Các tham số này cũng được định nghĩa bằng các biến queryparams tương ứng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories