我有一个 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()
函数。