首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLAlchemy有没有和姜戈的get_or_create等价物?

SQLAlchemy有没有和姜戈的get_or_create等价物?
EN

Stack Overflow用户
提问于 2010-03-30 22:57:31
回答 10查看 75.7K关注 0票数 186

如果对象已经存在(基于提供的参数),我希望从数据库中获取该对象,如果不存在,则创建该对象。

Django的get_or_create (或source)可以做到这一点。在SQLAlchemy中有没有类似的快捷方式?

我现在明确地写出来,就像这样:

代码语言:javascript
运行
复制
def get_or_create_instrument(session, serial_number):
    instrument = session.query(Instrument).filter_by(serial_number=serial_number).first()
    if instrument:
        return instrument
    else:
        instrument = Instrument(serial_number)
        session.add(instrument)
        return instrument
EN

Stack Overflow用户

发布于 2016-12-01 23:33:58

我稍微简化了@Kevin。避免在if/else语句中包装整个函数的解决方案。这样就只有一个return了,我觉得它更干净:

代码语言:javascript
运行
复制
def get_or_create(session, model, **kwargs):
    instance = session.query(model).filter_by(**kwargs).first()

    if not instance:
        instance = model(**kwargs)
        session.add(instance)

    return instance
票数 3
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2546207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档