MST

星途 面试题库

面试题:Python中数据库事务处理的基本操作

在Python中,使用`sqlite3`模块进行数据库操作。请编写一段代码实现一个简单的数据库事务,向一个名为`users`的表中插入两条记录,若第二条插入失败,整个事务回滚,且需处理可能出现的异常。表结构为`(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)`。
14.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import sqlite3

try:
    conn = sqlite3.connect('test.db')
    cursor = conn.cursor()

    # 开启事务
    conn.execute('BEGIN')

    # 插入第一条记录
    cursor.execute("INSERT INTO users (name) VALUES ('user1')")

    # 插入第二条记录,假设这里会失败(如违反唯一约束等,此处仅为示例)
    cursor.execute("INSERT INTO users (name) VALUES ('user2')")

    # 提交事务
    conn.execute('COMMIT')

    print("两条记录插入成功")

except sqlite3.Error as e:
    # 回滚事务
    conn.execute('ROLLBACK')
    print(f"插入过程中出现错误: {e}")

finally:
    cursor.close()
    conn.close()

上述代码中,使用sqlite3模块进行数据库操作。首先连接到数据库,开启事务,执行两条插入语句,若第二条插入失败,捕获sqlite3.Error异常并回滚事务,最后关闭游标和数据库连接。

注意:需确保users表已存在,若不存在,可在连接数据库后先使用CREATE TABLE语句创建:

cursor.execute('''CREATE TABLE IF NOT EXISTS users
                  (id INTEGER PRIMARY KEY AUTOINCREMENT,
                  name TEXT)''')