首页 > 解决方案 > 有没有更好的方法来仅在没有值的情况下返回空字符串,或者在短途有一个值时返回一个值?

问题描述

所以基本上我想在查询的结果为 None 时返回一个空字符串,如果有,则从结果中返回值。

我尝试使用

return '' if x is None else x

return x or ''

这就是我的功能的样子:

def get_token_status(self):
    query = 'SELECT used FROM tokens WHERE token = %s'
    self.cursor.execute(query, (self.token,))
    return self.cursor.fetchone()['used'] # // return '' or x // return '' if x is None else x

这就是我的光标实例的样子:

cursor = db.cursor(dictionary=True)

并且由于字典参数 cursor.fetchone() 返回带有值的字典,所以这就是我在这里使用方括号的原因

我还从查询中打印了 cursor.fetchone() 的值并将其打印出来

None

如果结果中没有行并且:

{'used': '1'}

如果结果中有行。我收到 TypeError 错误:

TypeError: 'NoneType' object is not subscriptable

当我调用函数时,我尝试在 try 块中捕获错误并且它起作用了,尽管我认为这样做有更好和更短的方法。

感谢您提前提供的所有帮助。

标签: pythonmysql

解决方案


由于对象是 adict或可能None,您可以执行以下操作:

return (self.cursor.fetchone() or {}).get('used', '')

推荐阅读