python - 如何使用 Python 和 Django 以编程方式在 MySQL 更新上执行 WHEN 和 THEN?

标签 python mysql django

我想通过在 mySQL 中使用 UPDATE CASE 方案在一个查询中更新多行。 我正在使用 python 和 Django 构建我的网络应用程序。这是我的代码:

UPDATE order
SET priority_number =
    CASE priority_number
    WHEN 2 THEN 3  
    WHEN 3 THEN 4
    WHEN 1 THEN 5
    WHEN 4 THEN 2
    WHEN 5 THEN 1
END

所以这个单一查询将按照我的意愿更新所有字段。我的问题是,如果我要更新的行数未知,我该如何编程?假设所有这些数字都来自一个数组,我将把它传递到我的 View 中,但我不知道我需要写多少 WHEN 和 THEN 语句?感谢您的帮助!

最佳答案

您可以使用条件 Case 以编程方式构建查询和 When .

所以,例如:

from django.db.models import Case, When

# Make a list of When expressions
when_list = [When(priority_number=2, then=3),
             When(priority_number=3, then=4)]

# Use in a query of your choice, as an example:
Model.objects.update(
    priority_number=Case(
        *when_list))

关于python - 如何使用 Python 和 Django 以编程方式在 MySQL 更新上执行 WHEN 和 THEN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353387/

相关文章:

mysql - 如何在查询的WHERE语句中使用ComboBox.Text作为Column?

php - 如何限制此 MySQL 查询的结果?

python - 当两个应用程序使用相同的命名空间时,reverse() 引发 NoReverseMatch

python - 客户端向 HTTPS 服务器发送 HTTP 请求

python - Django 客人只投票一次 poll

python - 谷歌应用引擎 oauth2 提供商

python - 如何加入绝对和相对网址?

MySQL - 一对多连接语句返回重复项

Django 管理预览

python - 现场生产中 argon2 hasher 的 Django 问题