我需要根据用户定义的步幅对数据点进行可变分组,并且我想尽量减少我的代码中与 django 交互的原始 SQL 的数量。问题“Can I create view with parameter in MySQL?”似乎是创建参数化 View 的好方法,但它要求我在执行主查询之前以某种方式设置一个变量。
因此,在查询集上执行任何查询之前,我如何在 mysql 连接中设置参数值?如果我有模型 Foo
并且我做了最基本的:
Foo.objects.all()
我如何将以下内容作为序言注入(inject)到 django ORM 到 SQL 编译器发出的任何代码中?
set @my_param := 5;
最佳答案
我想我有一个适用于我当前 MySQL 后端的解决方案。我相信它可能取决于未指定的评估顺序,并且可能会在未来的版本更改中中断:
Foo.objects.extra(where=('5 = (select @my_param := 5)',)).all()[0]
然后 django 产生的 SQL 是:
SELECT `srvr_foo`.`id`
FROM `srvr_foo`
WHERE (5 = (select @my_param := 5))
LIMIT 1;
关于mysql - 在 Django 中,我可以在检索查询集之前在序言中设置变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28221356/