mysql - 在 Django 中,我可以在检索查询集之前在序言中设置变量吗?

标签 mysql django

我需要根据用户定义的步幅对数据点进行可变分组,并且我想尽量减少我的代码中与 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/

相关文章:

php - MySql 所有行与一列之和

python - 如何在 Django 网页上获取 Facebook Places(签到)?

python - 如何在 CreateView 中设置 ForeignKey?

django - Haystack + Whoosh IndexError:索引是在具有不同数据大小的体系结构上创建的

php - 从 MySQL 时间戳列更改时间返回的日期

mysql - SELECT MAX() 与 SELECT 列 ORDER BY 列 DESC LIMIT 1

python - 在 Django 中的 form.cleaned_data[i] 上使用 rstrip

python - 在 django 模板引擎中访问字典

php - 如何修改 PHP SQL SELECT 查询以根据是否找到数据来显示消息

mysql - 用于选择美国多个州的模式设计,或 "all"