TinyDB Python for循环迭代一次然后停止

时间:2018-06-18 21:15:45

标签: python tinydb

如果我的问题愚蠢的话,新手Python用户如此道歉。首先,我有2个DB,我正在尝试使用嵌套for循环来比较它们。数据库已从2个驱动器的目录结构中填充,我希望根据每个驱动器中最新的文件进行同步。

def DBCompare(DB1,DB2):

for DBRecord1 in DB1:
    for DBRecord2 in DB2:

        if DBRecord1["CompleteFilePath"] == DBRecord2["CompleteFilePath"]:
            if DBRecord1["LastModified"] < DBRecord2["LastModified"]:
                DBRecord1["Flag"] = "OldFile"
                DB1.update(DBRecord1)
            elif DBRecord1["LastModified"] > DBRecord2["LastModified"]:
                DBRecord2["Flag"] = "OldFile"
                DB2.update(DBRecord2)
            elif DBRecord1["LastModified"] == DBRecord2["LastModified"]:
                DBRecord1["Flag"] = DBRecord2["Flag"] = "OldFile"
                DB1.update(DBRecord1)
                DB2.update(DBRecord2)
            else: continue  # Ignore errors for now
            break  # Found a match so jump out of the loop

return

内部for循环的第一次迭代(通过所有DB2)很好,然后它转到DB1的第二条记录并再次启动并遍历DB2 - 在开始时DB2返回到第一条记录但它保持不变在那里,永远不会增加。谁知道为什么?我确信无论如何都有一种更优雅的方式来做所有这些,但我是一个学习者.... 我遇到的另一个问题是如果目录结构太长,程序挂起 - 我无法找出数据库的大小或如何分配足够的内存,因此它不会耗尽(使用内存存储为我的TinyDBs)。

0 个答案:

没有答案