关键词

如何在Python中执行数据库事务?

以下是如何在Python中执行数据库事务的完整使用攻略,包括连接数据库、创建事务、提交事务等步骤。提供两个示例以便更好理解如何在Python中执行数据库事务。

步骤1:连接数据库

在Python中我们可以使用相应的数据库模块连接到数据库。以下是连接MySQL数据库的基本语法:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

在上面的语法中,localhost是MySQL服务器的主机名,yourusernameyourpassword是MySQL服务器的用户名和密码,mydatabase是要使用的数据库的名称。

步骤2:创建事务

在Python中,我们可以使用commitrollback方法提交或回滚事务。以下是创建事务的基本语法:

mycursor = mydb.cursor()

mycursor.execute("START TRANSACTION")

# 执行SQL语句

mycursor.execute("COMMIT")

在上面的语法中,我们首先创建一个cursor对象,并使用execute方法执行START TRANSACTION语句,表示开始一个事务。接着,我们执行需要在事务中执行的SQL语句。最后,我们使用execute方法执行COMMIT语句,表示提交事务。

示例1

在这个示例中,我们使用Python执行MySQL数据库事务,向customers表中插入一条记录,并向orders表中插入一条记录。

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

try:
    mycursor.execute("START TRANSACTION")

    sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
    val = ("John", "Highway 21")
    mycursor.execute(sql, val)

    sql = "INSERT INTO orders (customer_id, product_name) VALUES (%s, %s)"
    val = (mycursor.lastrowid, "Product A")
    mycursor.execute(sql, val)

    mydb.commit()
    print("Transaction committed successfully")

except:
    mydb.rollback()
    print("Transaction rolled back")

mycursor.close()
mydb.close()

在上面的代码中,我们首先使用mysql.connector模块连接到MySQL数据库。然后,我们创建一个cursor对象,并使用execute方法执行START TRANSACTION语句,表示开始一个事务。接着,我们向customers表中插入一条记录,并使用lastrowid属性获取插入的记录的ID。最后,我们向orders表中插入一条记录,并使用commit方法提交事务。如果事务执行成功,我们打印Transaction committed successfully,否则我们使用rollback方法回滚事务,并打印Transaction rolled back。最后,我们使用close方法关闭数据库连接。

示例2

在这个示例中,我们使用Python执行SQLite数据库事务,向students表中插入一条记录,并向scores表中插入一条记录。

import sqlite3

conn = sqlite3.connect('test.db')

cursor = conn.cursor()

try:
    cursor.execute("BEGIN TRANSACTION")

    sql = "INSERT INTO students (name, age) VALUES (?, ?)"
    val = ("John", 18)
    cursor.execute(sql, val)

    sql = "INSERT INTO scores (student_id, subject, score) VALUES (?, ?, ?)"
    val = (cursor.lastrowid, "Math", 90)
    cursor.execute(sql, val)

    conn.commit()
    print("Transaction committed successfully")

except:
    conn.rollback()
    print("Transaction rolled back")

cursor.close()
conn.close()

在上面的代码中,我们首先使用sqlite3模块连接到SQLite数据库。然后,我们创建一个cursor对象,并使用execute方法执行BEGIN TRANSACTION语句,表示开始一个事务。接着,我们向students表中插入一条记录,并使用lastrowid属性获取插入的记录的ID。最后,我们向scores表中插入一条记录,并使用commit方法提交事务。如果事务执行成功,我们打印Transaction committed successfully,否则我们使用rollback方法回滚事务,并打印Transaction rolled back。最后,我们使用close方法关闭数据库连接。

以上是如何在Python中执行数据库事务的完整使用攻略,包括连接、创建事务、提交事务等步骤。同时,提供了两个示例以便更好理解如何在Python中执行数据库事务。

本文链接:http://task.lmcjl.com/news/16288.html

展开阅读全文