1. INSERT bản ghi vào bảng với Python

Câu lệnh INSERT INTO trong MySQL được sử dụng để thêm (hay) nhập vào các bản ghi mới cho một bảng. Để chèn được dữ liệu vào trong bảng ta cần đảm bảo dữ liệu cần chèn có cùng kiểu dữ liệu với các cột có trong bảng mà ta đã tạo trước.

Trong Python, để thực hiện nhập vào bản ghi mới cho bảng MySQL chúng ta cần thực hiện hai bước sau:

  1. Kết nối Python tới MySQL bằng hàm mysql.connector.connect().
  2. Thực hiện nhập dữ liệu vào bảng thông qua câu truy vấn “INSERT INTO table_name(column1, column2, … ,columnN) VALUES (value1, value2,…,valueN)” trong đó:
    • table_name là bảng cần nhập dữ liệu vào.
    • column1, column2, … ,columnN là các cột tương ứng để dữ liệu nhập vào.
    • VALUES (value1, value2,…,valueN) là các dữ liệu nhập vào các cột tương ứng.

Ví dụ dưới đây, thực hiện tạo thêm một bảng ghi mới vào trong bảng “tbl_user” trong cơ sở dữ liệu có tên “laptrinhtudau” như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van
    sql = "INSERT INTO tbl_user(HoTen, Tuoi, GioiTinh) VALUES (%s, %s,%s)"
    # Them cac gia tri tuong ung vao cot
    val = ("Chu Minh Nam", 20, "nam")

    # Thuc thi cau truy van them ban ghi vao bang "tbl_user"
    mycursor.execute(sql,val)

    # Xac thuc viec nhap ban ghi vao bang "tbl_user"
    mydb.commit()
    print(mycursor.rowcount, "ban ghi da duoc them vao bang!")

except:# Truong hop co loi khi them ban ghi vao bang
    print("Them ban ghi khong thanh cong!")

Kết quả:

1 ban ghi da duoc them vao bang!

Lưu ý: Câu lệnh mydb.commit() là bắt buộc phải có khi chúng ta muốn thêm bản ghi vào trong một bảng. Nếu như không có câu lệnh mydb.commit() thì bảng cần thêm sẽ không được thay đổi!

2. INSERT nhiều bản ghi vào bảng với Python

Ở phần trên, chúng ta mới chỉ thực hiện việc thêm một bản ghi mới vào trong bảng thông qua hàmexecute() để thực thi việc này. Trong trường hợp ta mong muốn thêm nhiều bản ghi vào bảng cùng lúc thì sẽ thực hiện như thế nào?

Khi đó ta sẽ cần phải sử dụng đến hàm executemany() để thực hiện thêm nhiều bản ghi vào bảng cùng một lúc. Hàm executemany(sql,val) nhận vào hai tham số đó là:

  • Tham số đầu tiên, là câu lệnh truy vấn “INSERT INTO table_name(column1, column2, … ,columnN) VALUES (%s, %s,…,%s)”.
  • Tham số thứ hai, là một LIST – trong đó mỗi phần tử là một TUPLE có chứa các dữ liệu tương ứng cho các cột cần chèn vào.

Ví dụ dưới đây, sử dụng hàm executemany() để thêm đồng thời 5 bản ghi vào trong bảng “tbl_user” có trong cơ sở dữ liệu “laptrinhtudau” như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van
    sql = "INSERT INTO tbl_user(HoTen, Tuoi, GioiTinh) VALUES (%s, %s,%s)"
    # Them cac gia tri tuong ung vao cot
    val = [
        ('Tran Ngoc Ha', 20, 'nu'),
        ('Phung Thai Son', 20, 'nam'),
        ('Nguyen Tri Thanh', 19, 'nam'),
        ('Chu Quang Huy', 18, 'nam'),
        ('Chu Thi Minh Anh', 21, 'nu')
    ]

    # Thuc thi cau truy van them ban ghi vao bang "tbl_user" bang ham executemany()
    mycursor.executemany(sql,val)

    # Xac thuc viec nhap ban ghi vao bang "tbl_user"
    mydb.commit()
    print(mycursor.rowcount, "ban ghi da duoc them vao bang!")

except:# Truong hop co loi khi them ban ghi vao bang
    print("Them ban ghi khong thanh cong!")

Kết quả:

5 ban ghi da duoc them vao bang!

3. Lấy ID bản ghi vừa chèn vào bảng

Việc lấy id của bản ghi vừa chèn vào bảng được sử dụng để kiểm tra tính chính xác của bản ghi được chèn vào bảng đã đúng hay chưa. Bạn có thể lấy id của bản ghi vừa được chèn vào bảng thông qua cách sử dụng đối tượng con trỏ cursor() truy cập tới thuộc tính lastrowid của con trỏ đó.

import mysql.connector
try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )

    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Tao cau truy van
    sql = "INSERT INTO tbl_user(HoTen, Tuoi, GioiTinh) VALUES (%s, %s,%s)"
    # Them cac gia tri tuong ung vao cot
    val = ("Nguyen Phuong Thao", 21, "nu")

    # Thuc thi cau truy van them ban ghi vao bang "tbl_user"
    mycursor.execute(sql,val)
    # Xac thuc viec nhap ban ghi vao bang "tbl_user"
    mydb.commit()
    print("1 ban ghi da duoc them vao bang! ID: ",mycursor.lastrowid)
except:# Truong hop co loi khi them ban ghi vao bang
    print("Them ban ghi khong thanh cong!")

Kết quả:

1 ban ghi da duoc them vao bang! ID: 7

Chú ý: Nếu bạn chèn nhiều hơn một bản ghi vào bảng thì id của bản ghi được chèn cuối cùng sẽ được trả về kết quả!