如何使用 python 更新 mysql,其中字段和条目来自字典?

2023-11-25

我正在尝试创建一个可重用的 mysql 语句,用于从字典进行更新,其中键是数据库字段,进入该字段的数据是字典中与其关联的值。创建插入 mysql 的函数时这很容易,因为它只涉及两个列表。现在,我需要分解这些列表。

这是我必须处理的事情。

fields = self.dictionary.keys()
vals = self.dictionary.values()

stmt = "UPDATE TABLE table_name SET %s = '%s'" %(.join(fields), .join(vals))"

这会输出如下语句:

UPDATE TABLE table_name SET column1, column2 = ('value1','value2')

我需要它输出为标准格式以更新表,例如:

UPDATE table_name SET column1=value1, column2=value2

您不想使用字符串插值来放入文字值 - SQL 注入攻击是不是一件好事(tm)。相反,您使用与您的数据库相关的占位符语法(我认为 MySQL 是“%s”)。

注意:我正在使用.format在这里,如果需要,可以更改为使用 %,但转义任何 %

d = {'col1': 'val1', 'col2': 'val2'}
sql = 'UPDATE table SET {}'.format(', '.join('{}=%s'.format(k) for k in d))
print sql
# 'UPDATE table SET col2=%s, col1=%s'

假设cur是数据库游标执行查询的正确方法是:

cur.execute(sql, d.values())

这是有效的,因为尽管字典的排序实际上是任意顺序,但字典的键/值的顺序将是一致的,使得dict(zip(d.keys(), d.values())) == d.

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

如何使用 python 更新 mysql,其中字段和条目来自字典? 的相关文章

随机推荐

  • 如何在 Struts 2 中使用具有两个条件的

    我迭代项目列表 如果元素的状态等于学生或教师 则需要显示特定的下拉列表 以下代码显示所有字段 但不显示任何元素的下拉列表
  • malloc 未定义

    我目前正在重写链表模块 并且收到一些奇怪的错误 在两个 IDE Netbeans 和 Visual Studio Express 中 我收到一条警告 malloc未定义 并且在 linkedlist c 文件中找到的函数也未定义 下面是我的
  • 如何使用 javascript_include_tag 获取文件夹中的所有脚本

    我想用javascript include tag使用递归获取所有与视图相关的脚本 将其放置在public javascripts views 我想javascript include tag views recursive gt true
  • Java 8矩阵*向量乘法

    我想知道是否有一种更简洁的方法可以在 Java 8 中使用流执行以下操作 public static double multiply double matrix double vector int rows matrix length in
  • 如何在我的 HTTP 请求中使用带有身份验证的代理?

    我有一个代理 IP 地址 还需要用户名和密码 当我尝试使用它们访问网页时 我收到 需要代理身份验证 我发现了 2016 年的另一篇 Stackoverflow 帖子 以及这个已关闭的 Github 问题 但他们没有提供任何有用的东西 代理
  • 使用 ASP NET MVC 4 和 webapi 自定义 http 处理程序和路由处理程序

    我正在开发 ASPNET MVC 4 和 WebApi webapi 方法将由移动设备使用 我们需要保护服务的安全 而我们正在使用的是以某种特定方式加密数据 现在 我需要在到达控制器之前解密该调用 如果解密的信息有效 它应该像平常一样继续发
  • Apache 2.4“..身份验证失败..:密码不匹配”

    我在 Windows Server 2008 R2 中运行 Apache 2 4 我正在尝试用密码保护子目录 并在 Apache 2 0 中成功做到了这一点 升级后 我采纳了 Apache 的建议 并尝试将身份验证配置放入 httpd co
  • 如何防止android对讲说话seekbar进度

    我有一个自定义控件扩展SeekBar 其中我已经覆盖了onInitializeAccessibilityNodeInfo如下 Override public void onInitializeAccessibilityNodeInfo Ac
  • 在C#中用鼠标画线的正确方法是什么

    这是我的绘图代码 用于用鼠标在图表上绘制自定义线条 你能帮我以正确的方式做吗 namespace Grafi public partial class Form1 Form bool isDrawing false Point prevPo
  • 如何确定数组是否包含单独数组中的所有整数

    我在学校的计算机科学课上 我被这个问题困扰了 甚至无法真正想出如何解决它的想法 这里是逐字逐句 编写一个名为的静态方法contains接受两个整数数组 a1 和 a2 作为参数 并返回一个布尔值 指示 a2 的元素序列是否出现在 a1 中
  • DB Plugin 未在 Play 2.0 中注册

    我刚刚开始使用 play 并且修改了执行 SQL 读取的方式 现在收到以下错误 Exception DB plugin is not registered 我这个类的代码是 package models import play api db
  • 从 RichTextBox 复制选定的文本

    我在网上搜索过 但找不到从文件中复制 剪切 粘贴所选文本的方法RichTextBox 就连MSDN也没有给出答案 他们提供的代码不起作用 Copy 似乎仅适用于 TextBox 不适用于 RichTextBox 如果我复制这个方法 Clip
  • Pygame Joystick.get_axis() 始终返回零

    我购买了罗技游戏手柄 F310 来远程控制机器人 我在 Linux Mint 版本 18 Sarah 上使用 Pygame 版本 1 9 1 Python 版本 2 7 11 作为检查操纵杆功能的简单测试 我编写了这个简短的脚本 用于输出不
  • 在 asp.net 中创建自定义 .config 文件 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 有没有一种方法可以在 asp net 中创建 blah config 文件 并以与访问常规 web config 文件中的项目相同的方式访问节点的名称 值对 这个想法是不必为此编
  • 使用 one-hot 代码的 Tensorflow 混淆矩阵

    我使用 RNN 进行多类分类 这是我的 RNN 主要代码 def RNN x weights biases x tf unstack x input size 1 lstm cell rnn BasicLSTMCell num unit f
  • ES6 Promises 和 PEP3148 Futures 的连锁差异

    我对 ES6 Promises 和 PEP3148 Futures 实现差异的推理有些困惑 在 Javascript 中 当 Promise 与另一个 Promise 一起解决时 一旦解决或拒绝 外部 Promise 就会继承 内部 Pro
  • 使用 JOIN 而不是 WHERE 进行过滤

    在 SQL MSSQL Oracle 等 中 当连接表时 向 JOIN 语句添加过滤器而不是在 WHERE 子句中添加过滤器有什么好处 i e SELECT FROM X INNER JOIN Y ON X A Y A WHERE X B
  • 如何在 Excel VBA 中检查或取消多个待处理的 application.ontime 事件?

    我正在使用 Application Ontime 事件从单元格中提取时间字段 并安排一个子例程在那时运行 我的 Application Ontime 事件在 Workbook BeforeSave 事件上运行 因此 如果用户 更改所需时间
  • 在haskell中迭代字符串并用子字符串替换单个字符

    我正在尝试学习一些 Haskell 但发现很难 我的一些问题 当前的项目 我的想法是我必须遍历一个字符串并替换某些字符 带有新的子字符串 例如 如果我有一个字符串 FLXF 并且我想替换每个 F 如果子字符串名为 FLF 则结果应为 FLF
  • 如何使用 python 更新 mysql,其中字段和条目来自字典?

    我正在尝试创建一个可重用的 mysql 语句 用于从字典进行更新 其中键是数据库字段 进入该字段的数据是字典中与其关联的值 创建插入 mysql 的函数时这很容易 因为它只涉及两个列表 现在 我需要分解这些列表 这是我必须处理的事情 fie