Функция, возвращающая разное количество записей в физическом файле

У меня есть функция 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 ответов

Другие вопросы по тегам