SQLAlchemy将列表与查询进行比较以更新,删除和添加

时间:2019-04-15 12:33:42

标签: python sqlalchemy

我有一个字典列表,希望与使用Sqlalchemy的表进行比较。

我正在寻找一种比较有效的解决方案,以便将结果分为3组:

  • 表格中的那些而不是要删除的列表
  • 表格和列表中要更新的内容
  • 列表中的那些,而不是要添加的表

这些是我看过的选项,但认为不是最佳选择:

  1. 对列表中的每个项目进行查询,在适当的地方进行更新/添加,然后对表中的项目(而不是要删除的列表)进行否定查询。

  2. 查询表中的所有内容,然后执行“ 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被添加到表中并被移除。

1 个答案:

答案 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

相关问题