带字典的SQLAlchemy插入

苹果情人

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

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()

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

零323

尝试更换:

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和** kwargs?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章