Cam kết () trong Python là gì?

Quan trọng. Chú ý tuyên bố. ________số 8. Cần phải thực hiện các thay đổi, nếu không thì không có thay đổi nào được thực hiện đối với bảng

Chèn nhiều hàng

Để chèn nhiều hàng vào một bảng, hãy sử dụng phương thức executemany[]

Tham số thứ hai của phương thức executemany[] là danh sách các bộ, chứa dữ liệu bạn muốn chèn

# Mô-đun Nhập nhập mariadb nhập sys # Thêm tài khoản def add_account[cur, first_name, last_name, email, số tiền]. """Thêm tài khoản đã cho vào bảng tài khoản""". thực hiện ["CHÈN VÀO kiểm tra. tài khoản[tên_họ, họ, email, số tiền] GIÁ TRỊ [?, ?, ?, ?]", [tên_họ, họ, email, số tiền]] # Cập nhật Họ def update_account_amount[cur, email, change]. """Cập nhật số tiền của một tài khoản trong bảng""". thực hiện ["Kiểm tra CẬP NHẬT. tài khoản SET số tiền=[số tiền-?] WHERE email=?", [thay đổi, email]] # Khởi tạo kết nối thử. kết nối = mariadb. kết nối [máy chủ = "ví dụ. bầu trời. net", port=5009, ssl_ca="/path/to/skysql_chain. pem", user="db_user", password="db_user_password"] cur = conn. con trỏ[] new_account_fname = "John" new_account_lname = "Rockefeller" new_account_email = "john. rockefeller@ví dụ. com" new_account_amount = 418000000000. 00 add_account[cur, new_account_fname, new_account_name, new_account_email, new_account_amount] new_account_change = 1000000. 00 update_account_amount[cur, new_account_email, new_account_change] kết nối. cam kết [] kết nối. close[] ngoại trừ Ngoại lệ là e. print[f"Lỗi thực hiện giao dịch. {e}"] kết nối. khôi phục []

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ì
  • Python MySQL Cam kết[], rollback[] và setAutoCommit[] để quản lý các giao dịch
    • Các phương pháp quản lý Giao dịch cơ sở dữ liệu MySQL trong Python
    • 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
  • Bước tiếp theo

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

  • Record Updated successfully
    1. Phương thức
    Record Updated successfully
    2 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
  • Record Updated successfully
    3.
    Record Updated successfully
    4 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
  • Record Updated successfully
    5. Giá trị
    Record Updated successfully
    6 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

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
    Record Updated successfully
    7 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 pháp
    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

Công dụng của COMMIT[] là gì?

Sử dụng câu lệnh CAM KẾT để kết thúc giao dịch hiện tại của bạn và thực hiện vĩnh viễn tất cả các thay đổi được thực hiện trong giao dịch . Một giao dịch là một chuỗi các câu lệnh SQL mà Cơ sở dữ liệu Oracle coi là một đơn vị.

Ý nghĩa của CAM KẾT trong Python là gì?

Khoa học dữ liệu thực tế sử dụng Python . Bất cứ khi nào có bất kỳ thay đổi nào được thực hiện đối với cơ sở dữ liệu bằng cách sử dụng cập nhật hoặc bất kỳ câu lệnh nào khác, cần phải thực hiện các thay đổi đó. used to confirm the changes made by the user to the database. Whenever any change is made to the database using update or any other statements, it is necessary to commit the changes.

Tại sao CAM KẾT được sử dụng trong MySQL?

CAM KẾT có nghĩa là các thay đổi được thực hiện trong giao dịch hiện tại được thực hiện vĩnh viễn và hiển thị với các phiên khác . Mặt khác, một câu lệnh ROLLBACK hủy bỏ tất cả các sửa đổi được thực hiện bởi giao dịch hiện tại. Cả COMMIT và ROLLBACK đều giải phóng tất cả các khóa InnoDB đã được đặt trong giao dịch hiện tại.

Giao dịch trong Python là gì?

Giao dịch là cơ chế đảm bảo tính nhất quán của dữ liệu . Giao dịch có bốn thuộc tính sau - Tính nguyên tử - Giao dịch hoàn tất hoặc không có gì xảy ra. Tính nhất quán - Một giao dịch phải bắt đầu ở trạng thái nhất quán và để hệ thống ở trạng thái nhất quán.

Chủ Đề