Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新定义DB python句柄空结果_Python_Database_Exception Handling_Rethinkdb - Fatal编程技术网

重新定义DB python句柄空结果

重新定义DB python句柄空结果,python,database,exception-handling,rethinkdb,Python,Database,Exception Handling,Rethinkdb,使用RequiredB和python处理空结果的最佳技术是什么。 我尝试了这种方法,但捕捉异常并不令人满意 @staticmethod def get_by_mail(mail): try: return User( r.table('users').filter({"mail": mail}).limit(1).nth(0).run() ) except RqlRuntimeError: return No

使用RequiredB和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
如果有人尝试过其他技术,我很感兴趣。 谢谢你的帮助。

那应该行

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

处理此问题的最简单方法可能是通过使用
联合
添加想要返回的元素

r.table('users').filter({"mail": mail}).limit(1).union([{}])[0]

一个有点难看的工作,但它应该做的技巧。我认为我们应该扩展
default
语法来处理这个问题。我将对此提出一个问题。

不清楚在rql运行时出错的情况下,您想做什么。我想返回None或空dict{}那么您的方法不令人满意的方式是什么?我想减少模板搜索类似的内容谢谢,我喜欢这一行。谢谢,我也尝试一下