是否有更好的方法仅在没有值时才返回空字符串,或者在较短的情况下返回值时才返回值?

时间:2019-08-04 00:00:31

标签: python mysql

所以基本上,如果查询的结果为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块中捕获该错误,并且它起作用了,尽管我认为这样做的方法更好而更短。

感谢所有的帮助。

1 个答案:

答案 0 :(得分:0)

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

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