python - 您能否在使用模板化 SQL 查询时简化查询
问题描述
有没有办法简化这个语句以及访问元组中的某个元素。
l = (1,2,3,4)
sql = "INSERT INTO table1 VALUES ('%s', '%s', '%s', '%s') ON DUPLICATE KEY UPDATE id = 3"
cursor.execute(sql, l)
变成更动态的东西 - 我以此为例,但我有一个大约 30 列的表,这样做似乎是多余的。当有重复键时,我还想更新一些字段。有没有办法索引到特定值,例如列表中的第三个并像这样显示它
l = (1,2,3,4)
sql = "INSERT INTO table1 VALUES ('%s') ON DUPLICATE KEY UPDATE id = {l[2]}"
cursor.execute(sql,l)
其中“l”将包含将插入表中的值
解决方案
您可以根据元组的长度动态构造占位符字符串。
l = (1, 2, 3, 4)
placeholders = ",".join(['%s'] * len(l))
sql = f"INSERT INTO table1 VALUES ({placeholders}) ON DUPLICATE KEY UPDATE id = 3"
cursor.execute(sql, l)
顺便说一句,不要命名你的变量list
,这将取代标准list()
函数。
推荐阅读
- virtual-machine - VBoxManage 中缺少“movevm”命令
- google-drive-api - file.LastModifyingUser.EmailAddress 是否返回值?
- python - 如何在选择前 5k 个特征后准备我的数据集。原始形状为 (24500,56000)。预期 =(24k,5k)
- gitlab - 如何将 GitLab 变量扩展与 YAML 锚点结合起来?
- javascript - Javascript - 保存cookie并在用户刷新页面时保持保存的收藏按钮?
- sql - 使用 Google App Engine (GAE) 部署 Laravel Passport 时遇到问题
- javascript - React/Redux 中的父属性更新太晚
- ios - 外设特性的编写是否有保证的顺序?
- linux - Tty.c:可加载库和 perl 二进制文件不匹配
- pip - 如何在 Repl.it 上升级 pip 版本?