对于这种情况,假设有一个使用名为 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()
为什么第二种情况会失败,有没有办法让这种类型的语法在这里工作?