我需要检查远程数据库中的表并更新数据库中的另一个表。模型具有相同的字段,但使用差异方法检查将返回错误:
qs1从一个postgresql db获取数据
qs2从一个mysql db获取数据
qs1 = (Local.objects
.values_list('ref')
)
qs2 = (Remote.objects
.filter()
.values_list('ref'))
>>> qs1.difference(qs1, qs2)
DatabaseError:此数据库后端不支持交集。
答案 0 :(得分:0)
我不确定你认为你的代码是什么。
qs1在默认的Databasengine中查找模型 Local 。并且qs2也会在您的默认Databasengine中查找模型 Remote 。
您可能想要做的是在 settings.py 中定义第二个数据库 为实例“远程”命名,然后按如下方式修改q2:
qs2 = (Remote.objects.using("remote").filter().values_list('ref'))
这告诉django它应该联系你的远程数据库而不是你的本地数据库。
Lemme知道这有用与否。
答案 1 :(得分:0)
check = Qs1.objects.all()
prg=[]
[prg.append(x.ref) for x in check]
difference = (Qs2.objects
.exclude(ref__in=prg)
.values()
)
也许它不优雅,但它只是有效。