背景
在某個應用場景中义黎,需要對一個航班的機組3人進行航線拆分,原數(shù)據(jù)庫字段內(nèi)容為:姓名A朝抖,姓名B,姓名C怀浆,拆分后的結(jié)果是導入到[crew_link],成為3行不同的數(shù)據(jù)怕享。
按照普通拆分方法執(zhí)行insert into語句执赡,如果程序在導入第二個人時被意外終止,則下次導入時第一個人就會被重復導入函筋,所以引入事物查詢的目的就是為了防止重復沙合,這3人數(shù)據(jù)的插入,要么全部被執(zhí)行跌帐,要么一條也不執(zhí)行首懈,從而保證了數(shù)據(jù)的完整性。
具體的實現(xiàn)方法是在原有的mysql.py中增加如下語句:
def query_list(Muti_SQL):
'''
######[數(shù)據(jù)庫查詢]######
#函數(shù)說明 2018/3/30
目的:新增本函數(shù)的目的是進行事務一致性查詢時谨敛,保持數(shù)據(jù)庫數(shù)據(jù)的完整性
參數(shù):SQL代表接收到的sql語句究履,可以包含select、update脸狸、insert into最仑、delete等等
注:SQL為列表類型,可接受多語句
返回:返回cursor
調(diào)用該函數(shù)可以進行一系列fetch操作肥惭,比較實用
備注:cursor類型為字典型
'''
conn = connectDB()
if conn == 0:
return 0
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# print SQL # 檢查SQL語句是否正確
# 下面的代碼是一個事務
try:
#歷遍列表中的sql語句,并逐一查詢紊搪,并最終執(zhí)行
for n in Muti_SQL:
cursor.execute(n)
conn.commit()
return cursor
except:
conn.rollback() #引擎不支持事務時會報錯
finally:
cursor.close()
conn.close()