1

我有一个 python 函数,它获取目录中的文件,打开它们并读取它们并将每一行加载到数据库中。

问题是,经过一些随机数的运行后,该函数读取文件中错误数量的记录。到目前为止,在正在读取的 9 个文件中,它总共读取了正确的 691 条记录。当它出错时,它会读取 397,有时还会读取 1387。这段代码有错误吗?问题不仅仅是添加,因为当我在 commit() 之后签入数据库时​​,我会发现与这段代码计算的记录数相同。

def load_to_staging(self, file_name):
    '''Load the contents of the file into a database'''
    entry_counter = 0     #Keeps track of the number of records in the file
    session_flush_counter = 0    #after x number of records the session flushes
    params = {}
    params['key'] = 'file_name'
    params['file_name'] = file_name
    my_load_file = LoadFile.load_file_detail(**params) #get the file path
    myfile = codecs.open(my_load_file.file_path, 'r', encoding='cp1252')  #use encoding
    while True:
        lfd = LoadFileDetail()
        line = myfile.readline()
        if not line: 
            break
        entry_counter += 1
        session_flush_counter += 1
        lfd.data = line.rstrip('\n\r')
        lfd.load_file_id = my_load_file.id
        lfd.entry_number = entry_counter
        session.add(lfd)
        if session_flush_counter > SESSION_COUNTER:
            session.flush()
            session_flush_counter = 0        
    session.flush()
    return entry_counter

在调用该函数的代码中调用了sqlalchemysession.commit()函数。

4

0 回答 0