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
-----