是否有一个sql炼金术操作来添加记录,但检查dupes?

时间:2015-02-24 16:10:26

标签: postgresql sqlalchemy

我在postgres 9.3之上使用sql alchemy编写了大量代码。在检查记录尚不存在之后,我经常需要插入。为此,我执行以下操作

c = session.query(ClassName).filter(ClassName.id=new.id).count() 
if c==0:
    session.add(new)
    session.commit()

这有点乏味。有没有办法设置sql alchemy + postgres来自动处理该检查?我不一定在postgres中寻找一个独特的索引(如果记录已经存在会抛出错误),而不是一个“添加”操作,它知道如果记录已存在该怎么办。

1 个答案:

答案 0 :(得分:0)

为什么不定义自己的

  

“添加”操作,知道如果记录已经存在该怎么办。

def addIfNotExist(session, new):
    if not c:
        session.add(new)
        session.commit()
    else:
        pass #put other code here if needed

addIfNotExist(session, new)

如果没有在id上添加唯一索引,这是我能想到的最直接的事情,因为没有(据我所知)内置的做你想做的事情的方式