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
, name
và salary
. 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ảngmytable
và trả về kết quả. Kết quả này được in ra màn hình bằng lệnhprint(result)
. - Hàm
insert
được sử dụng để thêm một bản ghi mới vào bảngmytable
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ếnquery
vàparams
. - Hàm
update
được sử dụng để cập nhật thông tin trên bảngmytable
. Cụ thể là cập nhật trườngage
của bản ghi có tên làJohn
thành35
. - Hàm
delete
được sử dụng để xóa bản ghi có tên làJohn
khỏi bảngmytable
.
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 query
và params
tương ứng.