MST

星途 面试题库

面试题:Python自动化脚本中复杂数据库事务处理及异常处理

在Python中,使用SQLite数据库,假设有两个表,table1和table2 。table1有字段id (主键自增), value1;table2有字段id (主键自增), value2 。现在编写一个自动化脚本,实现从table1中查询value1大于10的记录,然后将这些记录的value1值翻倍后插入到table2的value2字段中。要求使用事务处理,确保数据一致性,并妥善处理可能出现的数据库异常。
37.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import sqlite3


def transfer_data():
    try:
        # 连接到SQLite数据库
        conn = sqlite3.connect('example.db')
        cursor = conn.cursor()

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

        # 从table1中查询value1大于10的记录
        cursor.execute('SELECT value1 FROM table1 WHERE value1 > 10')
        results = cursor.fetchall()

        # 将查询结果的value1值翻倍后插入到table2中
        for row in results:
            doubled_value = row[0] * 2
            cursor.execute('INSERT INTO table2 (value2) VALUES (?)', (doubled_value,))

        # 提交事务
        conn.execute('COMMIT')
        print("数据转移成功")

    except sqlite3.Error as e:
        # 发生异常时回滚事务
        if conn:
            conn.execute('ROLLBACK')
        print(f"数据库操作出现错误: {e}")
    finally:
        # 关闭数据库连接
        if conn:
            conn.close()


if __name__ == "__main__":
    transfer_data()