Я пытаюсь обработать кучу CSV-файлов в заданном каталоге.Каждый раз, когда я запускаю сценарий, он просматривает каждый файл в каталоге (в случае, если я добавил новые), а затем снова проверяет базу данных, чтобы увидеть, был ли файл обработан, и если да, то какую строку начать обработкуfrom.
Проблема в том, что скрипт, кажется, пропускает любой файл, который я перечислил в таблице базы данных, независимо от его состояния.Я уверен, что упускаю что-то очевидное, но не могу собрать воедино то, что мои тесты идут не так.
Вот структура таблицы:
file_processed_id | file_type | file_name | file_line | file_lines_processed | file_lines_skipped | file_status
Вот соответствующийcode:
for filename in os.listdir(path):
status = check_process_status(filename,conn)
if status != None:
if status[7] == 'completed':
pass
else:
start_line = status[3]
file_to_processed = filename
break
else:
start_line = 0
file_to_be_processed = filename
А вот функция, проверяющая db:
def check_process_status(f,conn):
# retrieve process status of file
cursor = conn.cursor()
cursor.execute("""SELECT *
FROM files_processed
WHERE file_type = 'faca'
AND file_name = %s
""",(f,))
row = cursor.fetchone()
if row == None:
return None # if no entry, returns null
else:
return row # returns row information
Я проверил соединение db и все, и если файл действительно существует в таблице, он возвращаетинформация о строке просто отлично.Я не понимаю, почему при каждом запуске скрипта он пропускает следующий файл, независимо от того, какое поле «file_status» установлено.
Есть мысли?