我有一个字典列表,希望与使用Sqlalchemy的表进行比较。
我正在寻找一种比较有效的解决方案,以便将结果分为3组:
这些是我看过的选项,但认为不是最佳选择:
对列表中的每个项目进行查询,在适当的地方进行更新/添加,然后对表中的项目(而不是要删除的列表)进行否定查询。
查询表中的所有内容,然后执行“ set(query)&set(list)”的一些实现以创建匹配列表,从初始列表中删除匹配列表中的项目,并查询以创建添加和删除列表,分别使用这些列表进行更新/添加/删除
class Widgets(model):
name = Column(String)
quantity = Column(Integer)
|----------------|------------------|
| name | quantity |
|----------------|------------------|
| foo | 2 |
|----------------|------------------|
| far | 4 |
|----------------|------------------|
list = [
{'name': 'foo', 'quantity': 3 },
{'name': 'bar', 'quantity': 7 }
]
在上面的示例中,foo的更新数量为3,bar被添加到表中并被移除。
答案 0 :(得分:0)
我将如何处理此问题:
要删除的元素:select element from TABLE where element not in (list_from_dict)
要更新的元素:select element from TABLE where element in (list_from_dict)
要添加的元素:list_from_dict
-result of the select for elements to update