Python / django - 将列表与数据库行进行比较

时间:2016-07-06 21:15:21

标签: python django sqlite

我有一个包含图像位置行的数据库,我还有一个运行脚本时生成的图像位置列表。我想让数据库与生成的列表保持同步。我会放弃这张桌子,但是这张桌子上有我需要保留的投票信息。如果我删除图像,我不希望有一个条目,但如果我添加图像,我希望能够保留所有其他图像的投票

示例:

[db]
Name   | Path               | vote_count
image1 | path/to/image1.jpg | 1
image2 | path/to/image2.jpg | 4
image3 | path/to/image3.jpg | 2

[list]
path/to/image1.jpg
path/to/image2.jpg
path/to/image3.jpg
path/to/image4.jpg

我想将列表与数据库进行比较,如果有添加的图像,我想看到db执行以下操作:

[db]
Name   | Path               | vote_count
image1 | path/to/image1.jpg | 1
image2 | path/to/image2.jpg | 4
image3 | path/to/image3.jpg | 2
image4 | path/to/image4.jpg | 0

实现这一目标的好方法是什么?

到目前为止,我有这个:

def ScanImages(request):
    files = []
    fileRoots = []
    for root, directories, filenames in os.walk('/web/static/web/images/'):
        for filename in filenames: 
            files.append(os.path.join(root,filename))
            fileRoots.append(root)

1 个答案:

答案 0 :(得分:1)

假设您有django模型VotableImage,您可以通过调用db_path_list = VotableImage.objects.values_list('Path', flat=True)获取其中一个字段的列表,然后检查files列表中存在的每个值(您通过脚本创建的) )