使用rethinkb和python处理空结果的最佳技巧是什么。 我试试这个,但捕捉异常并不令人满意。
@staticmethod
def get_by_mail(mail):
try:
return User(
r.table('users').filter({"mail": mail}).limit(1).nth(0).run()
)
except RqlRuntimeError:
return None
如果有人尝试过其他技术,我很感兴趣。 谢谢你的帮助。
答案 0 :(得分:3)
处理此问题的最简单方法可能是使用union
添加您想要的元素。
r.table('users').filter({"mail": mail}).limit(1).union([{}])[0]
一个稍微丑陋的工作,但它应该做的伎俩。我认为我们应该扩展default
语法来使用它。我将为此提出一个问题。
答案 1 :(得分:1)
那应该有用
r.table('users').filter({"mail": mail}).do( lambda users:
r.branch(
users.count() == 1,
users.nth(0),
None
)
)
您也可以删除第n个(0)并检索光标并执行:
user = None
for i in user:
user = i
break # You don't really need to break since there is at most one element