python - 使用 Python 检查数据库时循环遍历目录中的文件时出现问题

标签 python mysql file

我正在尝试处理给定目录中的一堆 csv 文件。每次运行脚本时,它都会遍历目录中的每个文件(如果我添加了新文件),然后再次检查数据库以查看文件是否已被处理,如果是,则从哪一行开始处理来自。

问题是,脚本似乎会跳过我在数据库表中列出的任何文件,无论状态是什么。我确信我遗漏了一些明显的东西,但无法完全拼凑出我的测试出错的地方。

表的结构如下:

file_processed_id | file_type | file_name | file_line | file_lines_processed | file_lines_skipped | file_status

相关代码如下:

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

这是检查数据库的函数:

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

我已经测试了数据库连接和所有内容,如果文件确实存在于表中,它会很好地返回行信息。我不明白的是为什么每次运行脚本时它都会跳到下一个文件,无论“file_status”字段设置为什么。

有什么想法吗?

最佳答案

根据您的评论,file_to_be_processed = filename 之后的 else 子句中不应该有一个 break 语句吗?

另请注意,上面几行该变量的 file_to_processed 名称错误。

另请注意,status[7] 可能会引发异常,因为表中似乎只有 7 个字段。我猜它应该是 status[6]

关于python - 使用 Python 检查数据库时循环遍历目录中的文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756986/

相关文章:

Python - 从另一个文件写入新文件

python - 在二维 Numpy 数组中切片非连续索引

php - 执行类别搜索 Sphinx php

php - SQL从Magento获取订单商品?

c# - 如何将 %programfiles%\directory\tool.exe 形式的字符串转换为 C#/.net 中可用的文件名?

C#:向二进制文件写入和读取列表

python - 复厄米矩阵 : different phase angles for EIG and EIGH 的特征分析

python - 从 X 数组中删除 NaN 行以及 Y 中的相应行

python - Pygame 显示位置

mysql - 如何在 SQL 中使用集合代数运算