我有一个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()
函数在调用此函数的代码中调用。