MYSQL中的多事务处理

背景

在某个应用场景中,需要对一个航班的机组3人进行航线拆分,原数据库字段内容为:姓名A,姓名B,姓名C,拆分后的结果是导入到[crew_link],成为3行不同的数据。

按照普通拆分方法执行insert into语句,如果程序在导入第二个人时被意外终止,则下次导入时第一个人就会被重复导入,所以引入事物查询的目的就是为了防止重复,这3人数据的插入,要么全部被执行,要么一条也不执行,从而保证了数据的完整性。

具体的实现方法是在原有的mysql.py中增加如下语句:

def query_list(Muti_SQL):
    '''
    ######[数据库查询]######
    #函数说明 2018/3/30
    目的:新增本函数的目的是进行事务一致性查询时,保持数据库数据的完整性
    参数:SQL代表接收到的sql语句,可以包含select、update、insert into、delete等等
    注:SQL为列表类型,可接受多语句
    返回:返回cursor
    调用该函数可以进行一系列fetch操作,比较实用
    备注:cursor类型为字典型
    
    '''
    conn = connectDB()
    if conn == 0:
        return 0
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # print SQL # 检查SQL语句是否正确
    # 下面的代码是一个事务
    try:
        #历遍列表中的sql语句,并逐一查询,并最终执行
        for n in Muti_SQL:
            cursor.execute(n)
        conn.commit()  
        return cursor
    except:
        conn.rollback() #引擎不支持事务时会报错
    finally:
        cursor.close()
        conn.close()

你可能感兴趣的:(MYSQL中的多事务处理)