Django管理司令部mysq

2024-09-28 23:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了

django.db.utils.NotSupportedError: (1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")

当我试着运行这个脚本时

class Command(NoArgsCommand):
    def handle_noargs(self, **options):
        survey_res = SurveyResults.objects.all()
        for i in survey_res:
            rescount = SurveyResults.objects.filter(pkey=i.pkey, partner_id=i.partner_id).count()
            if rescount > 1:
                objs = SurveyResults.objects.filter(pkey=i.pkey, partner_id=i.partner_id)[:1]
                SurveyResults.objects.exclude(pk__in=objs).delete()

有什么解决办法吗。。? 我试图删除所有记录,除了最新的记录有两个共同的字段。在


Tags: djangoiniddbpartnerobjects记录res
1条回答
网友
1楼 · 发布于 2024-09-28 23:33:17

你的MySQL版本不支持这些命令,所以你可以选择 要么使用不同版本的mySQL,要么不使用'IN',因为这看起来像 罪魁祸首。那么把最后一位改成:

if rescount > 1:
    objs = SurveyResults.objects.filter(pkey=i.pkey, partner_id=i.partner_id)[1:]
    for obj in objs:
        obj.delete()

这样,除了第一个返回的SurveyResults之外,您将删除所有的结果。当然,假设您的结果是按最新的排序的,因为正如您所指出的,您希望保留最新的。在

相关问题 更多 >