Функция, возвращающая разное количество записей в физическом файле
У меня есть функция 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()
Функция вызывается в коде, который вызывает эту функцию.