Cam kết Flask_mysqldb

Gói PyPI Flask-MySQLdb nhận được tổng cộng 8.134 lượt tải xuống mỗi tuần. Do đó, chúng tôi cho rằng mức độ phổ biến của Flask-MySQLdb là Nhỏ

Dựa trên số liệu thống kê dự án từ kho lưu trữ GitHub cho gói PyPI Flask-MySQLdb, chúng tôi thấy rằng gói này đã được gắn dấu sao 96 lần

Bài học này chủ yếu tập trung vào cách quản lý các giao dịch Cơ sở dữ liệu khi làm việc với cơ sở dữ liệu MySQL trong Python. Tìm hiểu quản lý giao dịch Python MySQL bằng cách sử dụng cam kết và khôi phục bằng mô-đun 'Trình kết nối Mysql python'

Đọc thêm

  • Giải bài tập Python MySQL
  • Đọc Hướng dẫn Python MySQL (Hướng dẫn đầy đủ)

Mục lục

Giao dịch cơ sở dữ liệu là gì

Giao dịch cơ sở dữ liệu đại diện cho một đơn vị công việc. Bất kỳ thao tác nào sửa đổi trạng thái của cơ sở dữ liệu MySQL đều là một giao dịch. Hãy xem chi tiết giao dịch cơ sở dữ liệu là gì. Ví dụ: lấy một mẫu chuyển khoản Ngân hàng, liên quan đến hai giao dịch quan trọng

  • Rút tiền từ tài khoản A
  • Gửi tiền vào tài khoản B

Nếu Giao dịch đầu tiên được thực hiện thành công nhưng giao dịch thứ hai không thành công, trong trường hợp này, chúng tôi cần gửi lại tiền vào tài khoản A. Để quản lý các trường hợp như vậy, chúng ta cần quản lý giao dịch

Sử dụng thuộc tính ACID, chúng ta có thể nghiên cứu tốt về quản lý giao dịch. ACID là viết tắt của Nguyên tử, Tính nhất quán, Cách ly và Độ bền

  • nguyên tử. có nghĩa là tất cả hoặc không có gì. Tất cả các giao dịch đều thành công hoặc không có giao dịch nào. Bạn có thể nhóm các câu lệnh SQL thành một đơn vị logic và nếu bất kỳ truy vấn nào không thành công, toàn bộ giao dịch sẽ thất bại
  • Tính nhất quán. Nó đảm bảo rằng cơ sở dữ liệu vẫn ở trạng thái nhất quán sau khi thực hiện giao dịch
  • Sự cô lập. Nó đảm bảo rằng giao dịch được cách ly với các giao dịch khác
  • Độ bền. Điều đó có nghĩa là một khi giao dịch đã được thực hiện, nó sẽ tồn tại trong cơ sở dữ liệu bất kể mất điện, lỗi hoặc khởi động lại hệ thống

Python MySQL Cam kết(), rollback() và setAutoCommit() để quản lý các giao dịch

Vui lòng làm theo các bước dưới đây để quản lý các giao dịch MySQL trong Python. –

  • Tạo kết nối cơ sở dữ liệu MySQL trong Python
  • Chuẩn bị các truy vấn SQL mà bạn muốn chạy như một phần của giao dịch. Ví dụ: chúng ta có thể kết hợp hai truy vấn SQL (truy vấn rút tiền và gửi tiền) trong một giao dịch
  • Đặt thuộc tính auto-commit của kết nối MySQL thành false
  • Thực hiện từng truy vấn một bằng cách sử dụng con trỏ. hành hình()
  • Nếu tất cả các truy vấn thực hiện thành công, hãy thực hiện các thay đổi đối với cơ sở dữ liệu
  • Nếu một trong các truy vấn không thực hiện được, thì hãy khôi phục tất cả các thay đổi
  • Nắm bắt mọi ngoại lệ SQL có thể xảy ra trong quá trình này
  • Đóng đối tượng con trỏ và kết nối cơ sở dữ liệu MySQL

Các phương pháp quản lý Giao dịch cơ sở dữ liệu MySQL trong Python

Python MySQL Connector cung cấp phương pháp sau để quản lý các giao dịch cơ sở dữ liệu

  • ________số 8_______. Phương thức MySQLConnection.commit() gửi câu lệnh COMMIT đến máy chủ MySQL, cam kết giao dịch hiện tại. Sau khi thực hiện thành công một truy vấn, hãy thực hiện các thay đổi liên tục vào cơ sở dữ liệu bằng cách sử dụng commit() của một lớp kết nối
  • rollback(). MySQLConnection.rollback hoàn nguyên các thay đổi được thực hiện bởi giao dịch hiện tại. Khi một trong các giao dịch không thực hiện được và bạn muốn hoàn nguyên hoặc hoàn tác tất cả các thay đổi của mình, hãy gọi phương thức khôi phục của đối tượng kết nối MySQL
  • autoCommit(). Giá trị MySQLConnection.autocommit có thể là Đúng hoặc Sai để bật hoặc tắt tính năng tự động cam kết của MySQL. Theo mặc định, giá trị của nó là Sai

Cam kết Flask_mysqldb
Cam kết Flask_mysqldb
python Quản lý giao dịch MySQL bằng cách sử dụng cam kết và khôi phục

Ví dụ Python để quản lý các giao dịch MySQL bằng cách sử dụng cam kết và khôi phục

import mysql.connector

try:
    conn = mysql.connector.connect(host='localhost',
                                   database='python_db',
                                   user='pynative',
                                   password='pynative@#29')

    conn.autocommit = False
    cursor = conn.cursor()
    # withdraw from account A 
    sql_update_query = """Update account_A set balance = 1000 where id = 1"""
    cursor.execute(sql_update_query)

    # Deposit to account B 
    sql_update_query = """Update account_B set balance = 1500 where id = 2"""
    cursor.execute(sql_update_query)
    print("Record Updated successfully ")

    # Commit your changes
    conn.commit()

except mysql.connector.Error as error:
    print("Failed to update record to database rollback: {}".format(error))
    # reverting changes because of exception
    conn.rollback()
finally:
    # closing database connection.
    if conn.is_connected():
        cursor.close()
        conn.close()
        print("connection is closed")

Đầu ra nếu truy vấn thực hiện thành công

Record Updated successfully

Bạn sẽ nhận được kết quả sau nếu một truy vấn không thực thi được

Failed to update record to database rollback

Hãy hiểu đoạn mã trên. –

  • Chúng tôi đã nhập mô-đun python trình kết nối MySQL để chúng tôi có thể sử dụng API của nó để giao tiếp với Cơ sở dữ liệu MySQL
  • Sau khi kết nối MySQL thành công, chúng tôi đặt auto-commit thành
    Record Updated successfully
    0, tôi. e. , chúng tôi chỉ cần thực hiện giao dịch khi cả hai giao dịch hoàn tất thành công
  • Chúng tôi đã chuẩn bị hai truy vấn SQL cập nhật như một phần của một giao dịch để gửi tiền vào tài khoản B từ tài khoản A
  • Chúng tôi đã thực hiện lần lượt cả hai truy vấn bằng phương thức
    Record Updated successfully
    1
  • Sau khi thực hiện thành công cả hai truy vấn, chúng tôi đã thực hiện các thay đổi của mình đối với cơ sở dữ liệu bằng cách sử dụng
    Record Updated successfully
    2
  • Trong trường hợp có ngoại lệ hoặc lỗi của một trong các truy vấn, chúng tôi có thể hoàn nguyên các thay đổi của mình bằng cách sử dụng
    Record Updated successfully
    3
  • Chúng tôi đã đặt tất cả mã của mình vào khối
    Record Updated successfully
    4 để nắm bắt các ngoại lệ cơ sở dữ liệu có thể xảy ra trong quá trình này

Bước tiếp theo

Để thực hành những gì bạn đã học trong bài viết này, vui lòng giải một dự án Bài tập về cơ sở dữ liệu Python để thực hành và thành thạo các thao tác với Cơ sở dữ liệu Python