作为Django项目的一部分,我想将API数据镜像到本地数据库。
我已经设法更新唯一键上的数据,但我正在努力如何从数据库中删除API文件中不再存在的数据。
为了说明这一点,让我们使用当前的API数据,如下所示:
[
{
"foo": "Lorem",
"bar": "ipsum",
},
{
"foo": "dolor",
"bar": "newvalue"
},
{
"foo": "adipiscing",
"bar": "elit"
}
]
和现有数据库记录(foo是唯一键列):
| id | foo | bar |
-----------------------------
| 1 | Lorem | ipsum |
| 2 | dolor | sit |
| 3 | amet | consectetuer |
在这种情况下,将更新id为1和2的行(在此过程中将sit
重写为newvalue
),并插入adipiscing
和elit
的新行。
问题是:有没有什么好的做法来确定和删除(批量)像id 3这样的行(例如唯一键amet
),这些行在(新更新的)输入中不再存在?
1条答案
按热度按时间oalqel3c1#
要获得API数据
foo
密钥的值:现在你想删除那些已经不在API数据中的变量,只需要排除那些仍然在API数据中的变量,如下所示:
你将拥有所有foo值不在API数据中的对象。只需对该QuerySet调用delete,如下所示:
它会做你想做的。
没有像
bulk_create
或bulk_update
那样的bulk_delete
。另外,如果你想你可以检索
foo
列的列表如下:这将输出
QuerySet("lorem", "dolor", "amet")
。将其视为foo
列的所有当前值。