如何优雅地检查对象/实例/变量的存在,并同时将其分配给python中存在的变量?

发布于 2021-01-29 15:10:50

我正在使用SQLAlchemy填充数据库,并且经常需要在处理之前检查数据库中是否存在orm对象。这可能是一个非常规的问题,但是我发现自己经常遇到这种模式:

my_object = session.query(SomeObject).filter(some_fiter).first()
if my_object: # Mostly in databases...
    # Juchee it exists
    # process
else:
    # It does not exist. :-(
    my_object = SomeObject()
    # process

of 以求 的是:

if my_object = session.query(someObject).blabla.first():
    # if my_object is None this scope is left alone
    # if my_object is not None I can work with my_object here...

我知道这种语法是错误的,但我想解释一下此示例的含义。任何等效的方式都会让我高兴。

这种模式是否有优雅的python方法?这个问题不仅针对SQLAlchemy,而且针对每个等效方案。

闭上眼睛打“发表您的问题”,并真诚地等待聪明的人和pythonistas追捕我,询问可能不适当的问题 ;-)

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您想要执行一个现有查询以提高效率

    (ret, ), = Session.query(exists().where(SomeObject.field==value))
    

    Mike
    Bayer在他的博客文章中对此进行了解释:http :
    //techspot.zzzeek.org/2008/09/09/selecting-
    booleans/


    如果不希望使用元组,则可以使用标量:

    ret = Session.query(exists().where(SomeObject.field==value)).scalar()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看