DBMS (7) - MySQL và Python

Bài trước: DBMS (6) - Workbench

-----

1.1.1       Thiết lập môi trường lập trình

Khi đã có một MySQL server đang chạy, bạn sẽ có 3 cách để kết nối và làm việc với nó. Một là sử dụng cửa sổ dòng lệnh (CMD), hai là sử dụng công cụ đồ họa (Workbench). Phần này sẽ giới thiệu cách thứ 3 để kết nối và làm việc MySQL server, đó là sử dụng một ngôn ngữ lập trình.

Bạn có thể sử dụng song song 3 cách trên để kết nối và làm việc với một MySQL server cụ thể. Nghĩa là bạn có thể tạo cơ sở dữ liệu, tạo bảng, nhập dữ liệu cho các bảng bằng cửa sổ dòng lệnh hoặc bằng Workbench, sau đó sử dụng Python để kết nối và truy vấn dữ liệu.

Python là một ngôn ngữ lập trình, do vậy để có thể lập trình Python, bạn cần chuẩn bị 3 thứ sau:

– Sử dụng phần mềm nào để viết mã nguồn

– Dùng phần mềm gì để dịch mã Python sang dạng mã máy

– Làm sao để thực thi chương trình và xem kết quả

Phần mềm viết mã nguồn Python

Bạn có thể sử dụng phần mềm lập trình bất kì để viết mã Python. Ví dụ: Notepad, VS Code, PyCharm.

Phần mềm để dịch mã Python

Sau khi viết mã Python xong, bạn cần phải dịch mã nguồn này sang dạng mã máy. Để dịch mã nguồn sang mã máy bạn có thể sử dụng phần mềm có tên là Python. Ở đây có 2 cái tên Python với ý nghĩa khác nhau. Một là ngôn ngữ lập trình Python, hai là phần mềm dịch mã Python sang mã máy cũng có tên là Python.

Vào trang của Python (https://www.python.org/), bấm vào mục Downloads để tài chương trình dịch Python về máy tính.

Cài đặt chương trình dịch Python (ví dụ: python-3.10.7-amd64.exe).

Sau khi cài đặt thành công, để kiểm tra việc cài đặt chương trình dịch Python đã được hay chưa? Bạn mở cửa sổ dòng lệnh, gõ lệnh python --version để kiểm tra, nếu nó xuất phiên bản của Python là việc cài đặt đã được.

Ví dụ:

C:\Users\Maxsys>python --version

Python 3.9.2

Thực thi chương trình và xem kết quả

Đơn giản nhất, bạn có thể sử dụng cửa sổ dòng lệnh để dịch chương trình, chạy và xem kết quả một chương trình Python.

Ví dụ:

– Mở chương trình soạn thảo mã nguồn bất kỳ, ví dụ Notepad (bấm phím cửa sổ + R, gõ notepad > Enter)

– Nhập vào đoạn mã nguồn sau

print('Chao bac Teo!')

– Lưu lại tập tin trên với phần mở rộng là .py. Ví dụ chao.py.

– Dịch chương trình chao.py và xuất ra kết quả. Giả sử tập tin chao.py đang ở ổ đĩa D:\. Bạn mở cửa sổ dòng lệnh, di chuyển tới ổ đĩa D:\. Gõ lệnh python chao.py để dịch và thực thi chương trình.

D:\>python chao.py

Chao bac Teo!

Vậy là bạn đã thiết lập xong môi trường lập trình gồm: chương trình dịch mã Python (Python), chương trình viết mã nguồn (Notepad), phần mềm để dịch và xem kết quả (CMD), máy MySQL Server đang chạy. Chúng ta sẽ bắt tay vào việc viết các ứng dụng làm việc với cơ sở dữ liệu MySQL.

1.1.2       Cài đặt mysql-connector-python

Để có thể dùng ngôn ngữ lập trình Python kết nối và làm việc với MySQL server, bạn cần phải cài đặt một bộ điều khiển (database driver), đây chính là thành phần trung gian giúp Python có thể “nói chuyện” được với MySQL server. Bộ điều khiển này có tên là mysql-connector-python. Xem hình minh họa.

Để cài đặt bộ điều khiển mysql-connector-python, bạn mở cửa sổ dòng lệnh và gõ vào lệnh sau: pip install mysql-connector-python. Ví dụ:

D:\>pip install mysql-connector-python

Collecting mysql-connector-python

  Downloading mysql_connector_python-8.0.30-cp39-cp39-win_amd64.whl (7.8 MB)

     |████████████████████████████████| 7.8 MB 2.2 MB/s

Collecting protobuf<=3.20.1,>=3.11.0

  Downloading protobuf-3.20.1-cp39-cp39-win_amd64.whl (904 kB)

     |████████████████████████████████| 904 kB 6.8 MB/s

Installing collected packages: protobuf, mysql-connector-python

Successfully installed mysql-connector-python-8.0.30 protobuf-3.20.1

WARNING: You are using pip version 20.2.3; however, version 22.2.2 is available.

You should consider upgrading via the 'c:\users\maxsys\appdata\local\programs\python\python39\python.exe -m pip install --upgrade pip' command.

Sau khi cài đặt mysql-connector-python, bạn cần kiểm tra xem việc cài đặt đã được chưa? bằng cách mở cửa sổ dòng lệnh > gõ lệnh python để mở chế độ nhập lệnh của Python:

D:\>python

Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> 

Nhập vào lệnh kết nối đến MySQL server:

(lưu ý là MySQL server phải đang chạy)

>>> import mysql.connector

>>> mysql.connector.connect(host='localhost', database='quan_ly_nha_hang_new', user='root', password='abcdef')

Nếu thành công, bạn sẽ thấy dòng thông báo

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

>>> 

1.1.3       Lập trình với MySQL bằng Python

Phần này sẽ viết một đoạn mã bằng ngôn ngữ Python để kết nối vào cơ sở dữ liệu, truy vấn và hiển thị thông tin.

– Mở Notepad, tạo một tập tin mới, lưu với tên bất kì. Ví dụ hienThiDuLieu.py

– Nhập vào đoạn mã sau:

[hienThiDuLieu.py]

# khai báo sử dụng thư viện kết nối connector của

# bộ điều khiển mysql-connector-python

import mysql.connector

 

# tạo một kết nối tới MySQL server

conn = mysql.connector.connect(

    host = "localhost",

    user = "root",

    password = "abcdef",

)

# thử kết nối và xuất thông tin của kết nối

print(conn);

– Lưu tập tin, ra cửa sổ dòng lệnh để thực thi chương trình hienThiDuLieu.py.

D:\>python hienThiDuLieu.py

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

Nếu có kết quả như trên là chương trình của bạn đã kết nối thành công đến máy MySQL server.

– Sử dụng con trỏ điều khiển cursor() để thao tác với MySQL server

# sử dụng con trỏ điều khiển cursor() để thao tác với MySQL server

cursor = conn.cursor()

 

# tạo cơ sở dữ liệu

cursor.execute("CREATE DATABASE IF NOT EXISTS quan_ly_nha_hang_1")

 

– Lưu tập tin, ra cửa sổ dòng lệnh để thực thi chương trình hienThiDuLieu.py.

D:\>python hienThiDuLieu.py

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

– Dùng cửa sổ dòng lệnh hoặc Workbench để kiểm tra xem Python đã tạo được cơ sở dữ liệu quan_ly_nha_hang_1 hay chưa?

mysql> show databases;

+----------------------+

| Database             |

+----------------------+

| information_schema   |

| mysql                |

| performance_schema   |

| quan_ly_nha_hang_1   |

| quan_ly_nha_hang_new |

| quan_ly_sach         |

| sys                  |

+----------------------+

7 rows in set (0.00 sec)

– Dùng Python để hiển thị các cơ sở dữ liệu

# hiển thị các cơ sở dữ liệu

cursor.execute("SHOW DATABASES")

for x in cursor:

    print(x)

– Lưu tập tin, ra cửa sổ dòng lệnh để thực thi chương trình hienThiDuLieu.py.

D:\>python hienThiDuLieu.py

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

('information_schema',)

('mysql',)

('performance_schema',)

('quan_ly_nha_hang_1',)

('quan_ly_nha_hang_new',)

('quan_ly_sach',)

('sys',)

– Trong trường hợp bạn đã tạo cơ sở dữ liệu trên MySQL server, thì khi tạo kết nối sẽ khai báo luôn là kết nối vào cơ sở dữ liệu nào?

# tạo một kết nối tới MySQL server

conn = mysql.connector.connect(

    host = "localhost",

    user = "root",

    password = "abcdef",

    database = "quan_ly_nha_hang_new"

)

– Lưu tập tin, ra cửa sổ dòng lệnh để thực thi chương trình hienThiDuLieu.py.

D:\>python hienThiDuLieu.py

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

– Tạo bảng dữ liệu

# tạo bảng dữ liệu

cursor.execute("CREATE TABLE IF NOT EXISTS loai_mon_an_1(ma_loai int, ten_loai varchar(200), mo_ta varchar(500), hinh varchar(100))")

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


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

cursor.execute("INSERT INTO loai_mon_an_1(ma_loai, ten_loai, mo_ta, hinh) VALUES (1, 'com', 'cac mon com Viet', 'com.jpg')")

 

# xác nhận việc chèn "cố định" dữ liệu vào bảng

conn.commit()

 

# in số hàng vừa chèn vào bảng

print(cursor.rowcount, "da duoc chen vao bang")

 

– Truy vấn dữ liệu

# truy vấn dữ liệu

cursor.execute("SELECT * FROM loai_mon_an_1")

ketQua = cursor.fetchall()

for x in ketQua:

    print(x)

– Sau khi làm việc xong, bạn cần phải đóng con trỏ điều khiển cursor và đóng kết nối tới cơ sở dữ liệu

# đóng con trỏ cursor, đóng kết nối

cursor.close()

conn.close()

[hienThiDuLieu.py]

# khai báo sử dụng thư viện kết nối connector của

# bộ điều khiển mysql-connector-python

import mysql.connector

 

# tạo một kết nối tới MySQL server

conn = mysql.connector.connect(

    host = "localhost",

    user = "root",

    password = "abcdef",

    database = "quan_ly_nha_hang_new"

)

 

# thử kết nối và xuất thông tin của kết nối

print(conn);

 

# sử dụng con trỏ điều khiển cursor() để thao tác với MySQL server

cursor = conn.cursor()

 

# tạo cơ sở dữ liệu

cursor.execute("CREATE DATABASE IF NOT EXISTS quan_ly_nha_hang_1")

 

# hiển thị các cơ sở dữ liệu

cursor.execute("SHOW DATABASES")

for x in cursor:

    print(x)

 

# tạo bảng dữ liệu

cursor.execute("CREATE TABLE IF NOT EXISTS loai_mon_an_1(ma_loai int, ten_loai varchar(200), mo_ta varchar(500), hinh varchar(100))")

 

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

cursor.execute("INSERT INTO loai_mon_an_1(ma_loai, ten_loai, mo_ta, hinh) VALUES (1, 'com', 'cac mon com Viet', 'com.jpg')")

 

# xác nhận việc chèn "cố định" dữ liệu vào bảng

conn.commit()

 

# in số hàng vừa chèn vào bảng

print(cursor.rowcount, "da duoc chen vao bang")

 

# truy vấn dữ liệu

cursor.execute("SELECT * FROM loai_mon_an_1")

ketQua = cursor.fetchall()

for x in ketQua:

    print(x)

 

# đóng con trỏ cursor, đóng kết nối

cursor.close()

conn.close()

1.1.4       Xem và đọc thêm

– Cài đặt mysql-connector-python: https://freetuts.net/xu-ly-mysql-trong-python-3503.html

– MySQL Basics in Python: https://www.youtube.com/watch?v=4C7vFFyyZjE

– W3Schools: https://www.w3schools.com/python/python_mysql_create_table.asp

1.1.5       Bài tập và thực hành

Bài 1. Làm lại các ví dụ trong phần lý thuyết

1.1.6       Câu hỏi ôn tập


-----

Cập nhật: [11/9/2022]