当前位置: 首页 > 面试题库 >

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

谷梁楚青
2023-03-14
问题内容

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


问题答案:

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

(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()


 类似资料:
  • 问题内容: 嗨,我正在使用Java Optional。我看到Optional有一个ifPresent方法。 而不是做类似的事情: 我想知道如何使用Optional.ifPresent()将值分配给变量。 我正在尝试类似的东西: 我需要lambda函数来获取分配给该变量的值是什么? 问题答案: 您可以使用#orElse或orElseThrow来提高代码的可读性。

  • 问题内容: 我想检查一个变量是否存在。现在我正在做这样的事情: 是否有其他方法无一例外? 问题答案: 要检查是否存在局部变量: 要检查是否存在全局变量: 要检查对象是否具有属性:

  • 我有一个Typescript项目,我需要知道变量的值是否在对象的任何属性中。 这就是目标: 这是声明的变量: 以下是我检查它是否存在的步骤: 问题:做三次检查会在其他机器上运行三次 我需要知道的是,如何检查它是否存在,而不需要迭代对象,如果它不存在,只需操作一次

  • 问题内容: 我正在学习Python,现在我正在讨论范围和非本地语句。在某个时候,我以为我想通了一切,但是后来非本地人来了,把一切都分解了。 示例1: 运行它自然会失败。 更有趣的是)没有执行。为什么?。 我的理解是,封闭不执行之前执行,并嵌套时,才会执行被调用。我很迷惑… 好,让我们尝试示例2: Aaand …运行良好。哇!!它是如何解决的?功能永远不会执行! 我的理解是,非本地语句是在运行时评估

  • 这是我目前所拥有的,但它不起作用。如何连接所有内容?我认为问题在于逗号。

  • 问题内容: 在Python中,可以分割字符串并将其分配给变量: 但在Go中似乎无效: 问题: 如何在一个步骤中拆分字符串并分配值? 问题答案: 例如两个步骤 输出: 例如一个步骤 输出: