Mysql“VALUES 函数”已弃用

2024-03-06

这是我的 python 代码,它打印 sql 查询。

def generate_insert_statement(column_names, values_format, table_name, items, insert_template=INSERT_TEMPLATE, ):
    return insert_template.format(
        column_names=",".join(column_names),
        values=",".join(
            map(
                lambda x: generate_raw_values(values_format, x),
                items
            )
        ),
        table_name=table_name,
        updates_on=create_updates_on_columns(column_names)
    )
query = generate_insert_statement(table_name=property['table_name'],
        column_names=property['column_names'],
        values_format=property['values_format'], items=batch)
        print(query) #here
        execute_commit(query)

当打印 Mysql 查询时,我的 Django 项目在终端中显示以下错误:

'VALUES function' is deprecated and will be removed in a future release. Please use an alias (INSERT INTO ... VALUES (...) AS alias) and replace VALUES(col) in the ON DUPLICATE KEY UPDATE clause with alias.col instead

Mysql 文档对此没有太多说明。这是什么意思以及如何纠正它。

INSERT_TEMPLATE = "INSERT INTO {table_name} ({column_names}) VALUES {values} ON DUPLICATE KEY UPDATE {updates_on};"

基本上,mysql 正在寻求删除值函数的长期非标准使用,以便为将来的一些工作扫清道路,其中 SQL 标准允许使用 VALUES 关键字来实现非常不同的东西,并且因为 VALUES 函数如何在子查询中工作在 ON DUPLICATE KEY UPDATE 子句中可能会令人惊讶。

您需要向 VALUES 子句添加别名,然后在 ON DUPLICATE KEY UPDATE 子句中使用该别名而不是非标准 VALUES 函数,例如改变

INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)

to

INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz

(这只适用于 mysql 8+,不适用于旧版本或至少 11.0.1 之前的任何版本的 mariadb)

请注意,如果您要更新多行,这没有什么不同:

INSERT INTO foo (bar, baz) VALUES (1,2),(3,4),(5,6) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz

From https://dev.mysql.com/worklog/task/?id=13325 https://dev.mysql.com/worklog/task/?id=13325:

根据 SQL 标准,VALUES 是一个返回表的表值构造函数。在 MySQL 中,对于简单的 INSERT 和 REPLACE 语句来说是这样,但 MySQL 还使用 VALUES 来引用 INSERT ... ON DUPLICATE KEY UPDATE 语句中的值。例如。:

插入重复键上的 t(a,b) 值 (1, 2) 更新 a = 值 (b) + 1;

VALUES (b) 指的是 INSERT 的表值构造函数中 b 的值,在本例中为 2。

为了使值在简单算术表达式中可用,它是 simple_expr 解析器规则的一部分。不幸的是,这也意味着 VALUES 可以在许多其他语句中以这种方式使用,例如:

从 t 中选择 a,其中 a=VALUES(a);

在所有此类语句中,VALUES 返回 NULL,因此上述查询不会达到预期效果。 VALUES 作为函数而不是表值构造函数的唯一有意义的用法是在 INSERT ... ON DUPLICATE KEY UPDATE 中。此外,INSERT ... ON DUPLICATE KEY UPDATE 中的非标准使用不会扩展到子查询。例如。:

插入重复键上的 t1 值(1,2) 更新 a=(从 t2 中选择 a,其中 b=值(b));

这并没有达到用户的预期。 VALUES(b) 将返回 NULL,即使它位于 INSERT .. ON DUPLICATE KEY UPDATE 语句中。

非标准语法还使得实现功能 F641“行和表构造函数”中指定的 VALUES 标准行为变得更加困难(不可能?)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql“VALUES 函数”已弃用 的相关文章

  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • SPARQL递归祖先查询

    我被 SPARQL 中的递归查询困住了 我无法理解它 我想获得一个实例的所有祖先 a a hasParent b b hasParent c c hasParent d 所以结果将是 b c and d 如果实例是 a 有什么想法如何构造父
  • 表存储(模拟器)插入失败,并显示“请求输入之一无效”。

    我有一个导入过程 它从旧源获取数据并将其放入表存储中 这使我可以重新初始化表存储并根据需要重新开始 它在更新到 10 月份的 Azure SDK for NET VS2012 之前就可以正常工作 现在 插入一些实体后它会失败 似乎有所不同
  • 如何从 lxml 错误中获取更多信息?

    因为我无法使用 XSL IDE 所以我使用 lxml 编写了一个超级简单的 Python 脚本 通过给定的 XSL 转换来转换给定的 XML 文件 并将结果写入文件 如下 有删节 p XMLParser huge tree True xml
  • 页面属性中的 AEM 页面图像不应用 sling:resourceType

    使用 Adob e Experience Manager 5 6 1 AEM 以前称为 CQ5 我尝试创建一个类似于页面属性中的 图像 选项卡的新选项卡 它将被命名为 标志 我基本上只是复制 图像 选项卡来创建徽标选项卡 并重命名路径以反映
  • 有没有办法以编程方式将值保存到 web.config appSettings 而不破坏注释和格式?

    此代码可以工作 但它会破坏 Web config 中的注释和格式 有没有一种方法可以写入 Web config 且不会破坏格式 var webConfig WebConfigurationManager OpenWebConfigurati
  • 如何在 PyTorch 数据加载器中将 RGB 图像转换为灰度图像?

    我已经从 MNIST 数据集中下载了一些示例图像 jpg格式 现在我正在加载这些图像来测试我的预训练模型 transforms to apply to the data trans transforms Compose transforms
  • 尝试在javascript中打开多个窗口

    我需要点击按钮打开多个网址 正在 Chrome 上进行测试 PS 我这样做是为了自己 我只是想打开我每天早上想阅读的所有网址 例如 我不想浪费时间点击每个网址 不确定 javascript 是否是构建此类功能的正确工具 写了下面的代码 它打
  • vscode prettier 不格式化 .tsx 文件

    我已经在 Visual Studio 代码编辑器中使用 Prettier 扩展很长时间了 但最近我一直在使用 Typescript 编写 React 所以我需要配置 Prettier 来格式化 tsx files 使用以下内容编辑设置set
  • 如果我因为想要转向生产而关闭 Play 商店中的公开测试版计划,那么我的应用程序的用户会发生什么情况?

    以前曾有人问过这个问题 但没有提供答案 也没有链接到文档说明如果开发人员有公开测试版程序并决定关闭它 应用程序的用户会发生什么 这些用户是否会自动转换为生产用户 还是必须重新下载应用程序 如果关闭公开测试计划并开始将新的更新推向生产环境 他
  • Python坐标之间的转换

    有没有不同坐标系之间转换的函数 例如 Matlab 有 rho phi cart2pol x y 用于从笛卡尔坐标到极坐标的转换 看起来应该是 numpy 或 scipy 使用 numpy 您可以定义以下内容 import numpy as
  • 设置 Oracle JDBC 瘦客户端的语言

    我想在实际创建 JDBC 连接之前为其指定语言 例如 如果我在中指定了错误的 L P 凭证 DriverManager getConnection url user password 我需要得到ORA错误已本地化为我选择的语言 我使用 Or
  • 具有多个窗口的 SDL 2.0 退出事件

    我正在使用 SDL 2 0 并决定尝试制作多个窗口 不幸的是 现在我无法退出程序而不返回 IDE 并强制关闭它 事件处理尽可能简单 我只轮询退出事件 并且在添加第二个窗口之前它工作得很好 使用多个窗口时是否会忽略退出事件 如果是这样 我怎样
  • 页面重新加载后断点

    页面重新加载后我需要在断点处停止 我在代码中放置了一个断点 但重新加载后它被禁用 putting debugger 在代码中工作正常 但我想知道是否有办法在 firebug 或 chrome 开发工具中做到这一点 可能是您的页面 url 中
  • Eureka检测服务状态

    Context 我们使用 Spring Cloud Netflix 和 Eureka 作为服务发现 使用 Zuul 来代理服务并对其进行负载平衡 微服务使用NodeJS实现 并使用NPM模块注册到Eurekaeureka js 客户端 ht
  • 查询数据集

    我正在将 XML 文件中的数据读取到强类型中DataSet 数据最终存放在多个表中 我可以对其运行查询来创建非规范化视图以显示在DataGrid 输入示例
  • 如何在处理过程中更新 OpenGL 中的显示?

    距离我上次使用 OpenGL 已经过去一年多了 所以我对这个话题已经很生疏了 我正在对一张图像进行一些处理 具体来说是颜色聚类 并且我想在每次循环迭代后更新图像 这样我就可以看到发生的变化 而不是在处理完成后看到变化 这就是目前正在发生的情
  • 使用 SQL FileStream 发生内存泄漏

    我有一个使用 SQL FILESTREAM 来存储图像的应用程序 我插入一个LOT图像数量 每天数百万张图像 一段时间后 机器停止响应 似乎内存不足 查看 PC 的内存使用情况 我们没有看到任何进程占用大量内存 无论是 SQL 还是我们的应
  • 未修饰的 JDialog 边框

    我有一个关于未装饰的边界的问题JDialog使用Metal L F 查看此图片以查看此窗口上的边框 我正在尝试弄清楚如何消除或更改最外侧的蓝色边框的颜色JDialog 我查看了 UI 默认值Look Feel但我无法想出任何对此有用的方法
  • F# 中的 Seq.unfold 解释

    我正在尝试使用 F 懒惰地创建一个序列 该序列定义如下 序列的第 n 项 三角形数由下式给出 tn 1 2n n 1 所以前十个三角形 编号是 1 3 6 10 15 21 28 36 45 55 这是我到目前为止所拥有的 但它似乎不起作用
  • Mysql“VALUES 函数”已弃用

    这是我的 python 代码 它打印 sql 查询 def generate insert statement column names values format table name items insert template INSE