簡體   English   中英

如果python中沒有錯誤,如何保存整個數據庫事務

[英]How can I save the whole DB transaction if there is no error in python

我在一個文件夾中有很多文件,我打開文件夾並將所有文件中的所有數據導入到我的模型中,這里我的程序一次將數據導入一個文件中,因此它將一次讀取文件中的所有數據,然后進行迭代通過每一行末尾的每一行,我使用obj.save()將事務保存到數據庫。

我在這里遇到一些異常,而導入可能會鍵入不匹配錯誤,因此程序將停止該文件的導入,一半的數據將被導入,然后移至下一個文件。 因此,此問題導致數據重復,因此在這里我需要使用文件的obj.save()保存事務,如果沒有例外,我該如何實現這一目標,任何人都可以幫助我

        fromFile=open(path)
        for eachLine in fromFile:
            obj = SAMP()
            fieldsInline = eachLine.split(",")
            n=len(fieldsInline)
            if lines!=1:
            #obj.dates =  dates
                obj.col1 = fieldsInline[0].strip()
                obj.col2 = fieldsInline[1].strip()
                obj.col3 = fieldsInline[2].strip()
                obj.col4 = fieldsInline[3].strip()

                obj.save() 
            lines+=1

        except BaseException as e:
            logging.info('\tError in importing %s line %d : %s' % (path, lines, e.__str__()))
        else: 
            logging.info("\tImported %s, %d lines" % (path, lines))       

您可以使用交易

因此,您的功能應如下所示:

from django.db import transaction

@transaction.commit_on_success
def func():
    pass

要么:

from django.db import transaction

def func():
    # Some code
    with transaction.commit_on_success():
        pass

如果函數成功返回,那么Django將在此時提交在函數內完成的所有工作。 但是,如果函數引發異常,Django將回滾事務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM