python - Python sqlite3占位符,用于任意长度值的元组
问题描述
我有一个包含 6 列的表和一个长度为 6 的元组,我想插入它。代码示例如下所示:
values = ('1', 'foo', 'bar', 'egg', 'spam', 'qwe')
cursor.execute(
'''
INSERT INTO customers VALUES (?, ?, ?, ?, ?, ?)
''',
values
)
但是,我非常不喜欢?
在查询正文中写 6 次的想法。我正在寻找一种方法来做这样的事情:
values = ('1', 'foo', 'bar', 'egg', 'spam', 'qwe')
cursor.execute(
'''
INSERT INTO customers VALUES (?*)
''',
values
)
当然,为了避免写?
6 次,我可以使用这样的字符串格式:
values = ('1', 'foo', 'bar', 'egg', 'spam', 'qwe')
cursor.execute(
'''
INSERT INTO customers VALUES {}
'''.format(values)
)
但它是不安全的。我发现的最佳选择是计算所需的数量?
(在回答重复目标时提出的类似建议):
values = ('1', 'foo', 'bar', 'egg', 'spam', 'qwe')
cursor.execute(
'''
INSERT INTO customers VALUES ({})
'''.format(', '.join('?' for _ in values)),
values
)
但我希望可以有更优雅的方式来实现这一点,例如,像?*
我上面写的那样。有这样的功能吗?
解决方案
推荐阅读
- javascript - 括号内的字母代表什么?
- angular - Angular 10 Jasmine 组件在调用函数后不更新属性
- linux - GIT中的Cherry-pick合并冲突
- java - Minecraft bukkit spigot 插件传送到另一个世界导致崩溃:服务器滴答循环中的异常
- android - 以编程方式为 Kotlin 中 ImageView 的 layout_weight 编写代码
- reactjs - 如何使用 react i18next 库格式化货币
- python - Python:使用函数的输入作为函数内数据框名称的一部分
- autoit - AutoIt - ControlClick 跟随鼠标坐标
- android - 无法从 FirebaseUser Flutter 检索用户
- javascript - 在 SuiteScript 2.0 自定义模块中获取/设置值