gpt4 book ai didi

python - 使用 Python 参数替换将记录插入到 Sqlite 中,其中某些字段为空白

转载 作者:行者123 更新时间:2023-11-28 20:53:59 24 4
gpt4 key购买 nike

我正在运行这种查询:

insert into mytable (id, col1, col2)
values (:ID, :COL1, :COL2)

在 Python 中,这种形式的字典可以与上面的查询结合使用以进行参数替换:

d = { 'ID' : 0, 'COL1' : 'hi', 'COL2' : 'there' }
cursor.execute(sql_insert, d)

但在实际问题中,有很多列和很多行。有时填充字典的数据源没有条目。但是,如果字典很短,Sqlite 会提示提供的绑定(bind)数量不正确,而不是给我一种在本例中未填充的列中添加空字符串或 NULL 的方法。

我是个懒惰的人,或者有点完美主义者。我可以编写一些代码来将任何缺失的字段添加到字典中。我只是在寻找一种不需要将字段列表重复三次的优雅解决方案。

我尝试使用修改过的字典重载字典,如果该字段缺失,该字典会返回一个空字符串。

最佳答案

我还没有检查过这是否有效,但我认为它应该:

from collections import defaultdict
d = { 'ID' : 0, 'COL1' : 'hi' }
cursor.execute(sql_insert, defaultdict(str, d))

defaultdict 是一个专门的字典,其中任何丢失的键都会生成一个新值,而不是抛出 KeyError

当然,这只有在所有值都需要相同的默认值(例如空字符串或 None)时才有效。如果您需要不同的默认值,那么您将需要一个包含默认值的字典,您可以这样做:

DEFAULTS = { ... whatever ... }
d = { 'ID' : 0, 'COL1' : 'hi' }
cursor.execute(sql_insert, dict(DEFAULTS).update(d))

请注意,您必须每次都复制 DEFAULTS,以便您可以使用实际值更新副本。

关于python - 使用 Python 参数替换将记录插入到 Sqlite 中,其中某些字段为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3148315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com