gpt4 book ai didi

python - SQLAlchemy 插入带字典

转载 作者:太空狗 更新时间:2023-10-30 00:29:59 28 4
gpt4 key购买 nike

对于这种情况,假设有一个用名为 Game 的声明性基声明的表,其列名称为“espn_game_id”和“a_name”。在变量“s”下打开了一个 session 对象。所以这有效:

s.add(Game(espn_game_id=888, a_name='lol'))
s.commit()

这失败了:

n = {"espn_game_id": 888, "a_name": 'lol'}
s.add(Game(n))
s.commit()

这有效(假设已经有一个 espn_game_id==888 的条目):

n = {"a_name": 'lol'}
s.query(Game).filter(Game.espn_game_id==888).update(n)
s.commit()

为什么第二种情况会失败,有没有办法让这种语法在这里起作用?

最佳答案

尝试替换:

s.add(Game(n))

与:

s.add(Game(**n))

假设您有这样的函数:

def foo(**kwargs):
print [item for item in kwargs.items()]

它需要关键字而不是位置参数,所以这会起作用:

foo(**{'foo': 1, 'bar': 2}) 

这会失败:

foo({'foo': 1, 'bar': 2}) 

要获得更好的解释,您应该阅读 *args and **kwargs?

关于python - SQLAlchemy 插入带字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784489/

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