我是SQLAlchemy的新手。我目前有:
ev = model.EnumerationValue(key=key_level_2, code=level_2)
ev.keyvalues[key_parent] = level_1
model.Session.add(ev)
如何更改此选项以便仅在尚未存在的情况下添加该对象?这会很好......
model.Session.create_if_does_not_exist(ev)
谢谢!
答案 0 :(得分:3)
标准模式似乎是:
ev = model.Session.query(model.EnumerationValue).filter(model.EnumerationValue.key==key_level_2).filter(model.EnumerationValue.code==level_2).count()
if not ev:
ev = model.EnumerationValue(key=key_level_2, code=level_2)
ev.keyvalues[key_parent] = level_1
model.Session.add(ev)
不是非常优雅(我可能有语法错误 - 道歉)但是做了工作。
答案 1 :(得分:2)
我在寻找解决类似问题的模式时找到了this recipe 。我认为这可能是一个很好的,干净的,如果不是'The One True'解决方案,你原本想要的。