首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pony Orm - 'Insert if not exists‘语句

Pony Orm - 'Insert if not exists‘语句
EN

Stack Overflow用户
提问于 2018-03-01 15:32:52
回答 2查看 1.2K关注 0票数 1

我想知道如何运行一个查询,仅当一个项不存在时才将其插入到数据库中。我使用json作为实体,所以它们看起来像这样:

代码语言:javascript
复制
class Person(db.Entity):
    json = Required(Json)

name = "Alice"

if not Person.exists(lambda person: person['name'] == name):
    Person(json={'name': name, """ lots more fields """})

但这似乎执行了两个查询,这会减慢操作速度。理想情况下我想要像这样的东西

代码语言:javascript
复制
Person.insert_if_not_exists(json={...})

这到底有没有可能?

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 19:43:14

目前小马还不支持get_or_create作为单一命令,我们计划稍后添加它

票数 1
EN

Stack Overflow用户

发布于 2019-08-14 17:46:14

我认为您必须在插入过程中捕获重复异常,如下所述:

代码语言:javascript
复制
    try:
        with pony.orm.db_session:
            table(**row)
    except pony.orm.core.TransactionIntegrityError as e:
        if 'UNIQUE constraint failed' not in unicode(e):
            # Ignore duplicate
        else:
            raise
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49044709

复制
相关文章

相似问题

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