2010-08-16 70 views
7

我是SQLAlchemy的新手。我目前有: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) 

谢谢!

回答

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) 

不是非常优雅(我可能有语法错误 - 道歉),但做这项工作。

+0

该方法似乎是正确的,但我认为代码确实被破坏了。我有本地的东西可行,但它可能不符合“ONe真正的解决方案”的要求。 – 2011-12-13 09:43:50

+0

小心分享您的解决方案? – CadentOrange 2013-01-25 12:26:29

2

我发现this recipe,同时寻找一种模式来解决我有类似的问题。我认为如果不是你最初寻找的“真正的”解决方案,这可能是一个不错的和干净的。

相关问题