Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python和Django编程地执行MySQL更新?_Python_Mysql_Django - Fatal编程技术网

如何使用Python和Django编程地执行MySQL更新?

如何使用Python和Django编程地执行MySQL更新?,python,mysql,django,Python,Mysql,Django,我想使用mySQL中的更新案例场景在一个查询中更新多行。 我正在使用python和Django构建我的web应用程序。这是我的密码: 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 所以这个查询将按照我的要求更新所有字段。我的问题是,

我想使用mySQL中的更新案例场景在一个查询中更新多行。 我正在使用python和Django构建我的web应用程序。这是我的密码:

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

所以这个查询将按照我的要求更新所有字段。我的问题是,如果要更新的行数未知,如何编程?假设所有这些数字都来自一个数组,我将把它传递到我的视图中,我不知道我需要在什么时候写多少条语句?谢谢你的帮助

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

例如:

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))

您好,谢谢您的回复!在哪里可以传递我的数组?OP搜索解决方案以查找
更新
而不是
选择
更新答案以包含列表。您好,我创建了一个时间列表,如您所述。但当我将它作为*when_list传递到案例中时(根据您的示例),它实际上是试图执行*when_list,而不是列表中的内容。有什么建议吗?对不起,我忘了导入。让我再试一次!