小编典典

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

python

我正在使用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追捕我,询问可能不适当的问题 ;-)


阅读 186

收藏
2021-01-20

共1个答案

小编典典

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

(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()
2021-01-20