【问题标题】:How to write except no row found do something in sqlite Python如何写除了没有找到行在sqlite Python中做某事
【发布时间】:2019-12-11 21:36:58
【问题描述】:
 def showPost(car_id, menu_id):

    car = session.query(Car).filter_by(id=car_id).one()
    slectedItem = session.query(CarType).filter_by(id=menu_id).one()
    creator = getUserInfo(car.user_id)

    try:
        getUser = login_session['username']
    except:
        pass

此代码运行正常,但我尝试使用 pycodestyle 工具对其进行测试它返回错误:

错误: mine.py:460:5: E722 不要使用裸 'except'

捕获异常时,尽可能提及具体异常

我需要什么? 尝试: getUser = login_session['用户名']

    except ???:
            pass 

如果用户未登录,我需要 getUser 函数无法获取用户名, 如果 getUser 什么都不返回,则通过

【问题讨论】:

  • 您从该错误消息中不明白什么?你能解释一下你想要做的更多吗?此外,变量和函数名称应遵循lower_case_with_underscores 样式。

标签: python sqlite flask


【解决方案1】:

您应该考虑将 try except 块更改为 if/else 语句

 def showPost(car_id, menu_id):    
        car = session.query(Car).filter_by(id=car_id).one()
        slectedItem = session.query(CarType).filter_by(id=menu_id).one()
        creator = getUserInfo(car.user_id)

        getUser = login_session['username']
        if getUser is None:
            pass

此外,如果这是针对您使用 flask 构建的 Web 应用程序,您应该考虑使用 flask-sqlalchemy,它更易于阅读,并且具有一些不错的功能,例如 get_or_404,如果项目不是,则会引发 404 错误在数据库中找到

【讨论】:

    【解决方案2】:

    如果 login_session 是一个字典,它应该是 '除了 KeyError' 或使用 'login_session.get("username")' 如果 'username' 不在字典中,则返回 None。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 2021-07-14
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多