其他分享
首页 > 其他分享> > 使用`try except`尝试两个表达式

使用`try except`尝试两个表达式

作者:互联网

我有两个表达方式.我需要尝试一个表达式,如果它引发异常尝试另一个,但如果第二个也引发异常 – 引发异常.

我试过这个,但它看起来很难看,我不确定这是解决这个问题的最佳方法:

try:                                                           
    image = self.images.order_by(func.random()).limit(1)       
except:                                                        
    try:                                                       
        image = self.images.order_by(func.rand()).limit(1)     
    except ProgrammingError:                                   
        raise ProgrammingError(                                
            'The database engine must be PostgtreSQL or MySQL')

你怎么做呢?

解决方法:

制作单独的功能非常有帮助.

def get_random_image(self):
    for rand in func.random, func.rand:
        try:                                                           
            return self.images.order_by(rand()).limit(1)
        except ProgrammingError:                                                        
            pass
    raise ProgrammingError('This database engine is not supported')

标签:python,sqlalchemy,try-except
来源: https://codeday.me/bug/20190725/1537805.html