Điện thoại/ Zalo
0389934723
Bài 2: Thực thi truy vấn MySQL bằng Python.
Bài trước mình đã hướng dẫ mọi người cách cài đặt và kết nối Python đến MySQL rồi. Bài này mình sẽ hướng dẫn mọi người cách thực thi truy vấn MySQL trên Python.
Trong package PyMSQL mọi thao tác, tác động đến MySQL đều nằm ở trong object cursor
, chính vì vậy sau khi kết nối thành công đến MySQL thì chúng ta sẽ chỉ tập chung vào cursor object
thôi.
Hơn nữa để phù hợp với nguyên tắc open-close thì mình sẽ lợi dụng đặc thù của try catch để có thể auto đóng kết nối khi không dùng nữa. Bằng cách cho phương thức close()
vào finally
.
VD:
import pymysql
# Connect to the database
connection = pymysql.connect('localhost', 'root', '')
try:
with connection.cursor() as cursor:
# to do
finally:
# close connection
connection.close()
1, Phương thức execute().
Phương thức execute()
có tác dụng thức thi các truy vấn MySQL. sử dụng với cú pháp:
cursor.execute(query, params)
Trong đó:
query
là nội dung câu truy vấn mà bạn muốn thực thi trên MySQL.params
là mộtlist
,dict
,tuple
chứa các tham số mà bạn muốn parse vào câuquery
. Tham số này có thể bỏ trống.
Hàm này sẽ trả về số dòng dữ liệu (row) bị ảnh hưởng bởi câu truy vấn.
VD: Mình sẽ tạo database có tên pymysql
bằng Python.
import pymysql
# Connect to the database
connection = pymysql.connect('localhost', 'root', '')
try:
with connection.cursor() as cursor:
# create a database
query = "CREATE DATABASE pymysql"
print(cursor.execute(query)) # Output: 1
finally:
# close connection
connection.close()
Nếu như kết quả trả về là 1 thì là bạn đã tạo thành công database.
2, Phương thức executemany(),
Phương thức này về cú pháp thì tương tự như phương thức execute()
, chỉ khác là nó có khả năng làm ảnh hưởng nhiều dòng dữ liệu trên 1 câu query.
Cú pháp:
cursor.executemany(query, params)
Các tham số và kết quả trả về giống như phương thức execute()
.
VD: Mình sẽ tạo 1 table trong MySQL qua phương thức execmany()
.
import pymysql
# Connect to the database
connection = pymysql.connect('localhost', 'root', '', 'pymysql')
try:
with connection.cursor() as cursor:
# create a table
query = """
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
AUTO_INCREMENT=1
"""
cursor.execute(query)
finally:
# close connection
connection.close()
3, Phương thức commit().
Do mặc định thì connection không tự động commit thay đổi nên bạn cần phải sử dụng phương thức commit()
để thực hiện commit data khi có thay đổi.
Chú ý: Phương thức commit()
này nằm trong object connection.
VD: Mình sẽ thực thi insert dữ liệu vào table users
mà mình vừa tạo ở trên.
import pymysql
# Connect to the database
connection = pymysql.connect('localhost', 'root', '', 'pymysql')
try:
with connection.cursor() as cursor:
# insert a user
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('[email protected]', '123456'))
# commit
connection.commit()
finally:
# close connection
connection.close()
4, Phương thức autocommit().
Để không phải lúc nào cũng phải dùng phương thức commit()
sau khi thực thi các câu lệnh query làm thay đổi data trong MySQL thì các bạn có thể dùng phương thức autocommit()
để enable disable chế độ auto commit.
Chú ý: Phương thức autocommit()
này nằm trong object connection. Và nếu như bạn làm việc với transaction thì nên tắt chế độ này đi, để không bị ảnh hưởng đến data.
Cú pháp:
connection.autocommit(flag)
Trong đó: flag
là kiểu bool
set giá trị autocommit, Mặc định là None
– là không ở chế độ auto commit.
VD: Mình sẽ thiết lập autocommit đồng thời insert vào table users dữ liệu test.
import pymysql
# Connect to the database
connection = pymysql.connect('localhost', 'root', '', 'pymysql')
connection.autocommit(True)
try:
with connection.cursor() as cursor:
# insert a user
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
print(cursor.execute(sql, ('[email protected]', '123456'))) # output: 1
finally:
# close connection
connection.close()