函数在物理文件中返回不同数量的记录

时间:2013-07-30 10:35:30

标签: python file-io

我有一个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

sqlalchemy session.commit()函数在调用此函数的代码中调用。

0 个答案:

没有答案