Python 基于Flask的网站中出现奇怪的AttributeError

Python 基于Flask的网站中出现奇怪的AttributeError,python,postgresql,sqlalchemy,flask,Python,Postgresql,Sqlalchemy,Flask,我正在开发一个基于Flask和SQLAlchemy的网站 ss由sessionmaker在sqlalchemy.orm中创建 Anime、ActorQuote、AnimeComment是基于数据库结构的模型 ``` 当我使用try-except捕捉错误时,它会抛出另一个UnboundLocalError ``` 更奇怪的是,该网站仍然运作良好,什么也没有发生 这将按预期显示页面,没有错误 这将按预期显示页面,但有错误 你行吗 anime = ss.query(Anime).filter_by(a

我正在开发一个基于Flask和SQLAlchemy的网站

  • ss
    由sessionmaker在sqlalchemy.orm中创建

  • Anime、ActorQuote、AnimeComment是基于数据库结构的模型

  • ```

    当我使用try-except捕捉错误时,它会抛出另一个UnboundLocalError

    ```

    更奇怪的是,该网站仍然运作良好,什么也没有发生

  • 这将按预期显示页面,没有错误

  • 这将按预期显示页面,但有错误

  • 你行吗

    anime = ss.query(Anime).filter_by(anime_name=anime_name).first()
    
    如果未找到变量
    anime
    ,则该变量为
    None
    (如您在数据库中所说为空),因此当尝试访问
    None
    id
    时,
    AttributeError

    顺便说一句,我建议您使用扩展来处理所有数据库连接逻辑,并公开一些有用的函数,如“.first\u或\u 404”。 有了它,您的代码将成为

    anime = Anime.query.filter_by(anime_name=anime_name).first_or_404()
    
    你行吗

    anime = ss.query(Anime).filter_by(anime_name=anime_name).first()
    
    如果未找到变量
    anime
    ,则该变量为
    None
    (如您在数据库中所说为空),因此当尝试访问
    None
    id
    时,
    AttributeError

    顺便说一句,我建议您使用扩展来处理所有数据库连接逻辑,并公开一些有用的函数,如“.first\u或\u 404”。 有了它,您的代码将成为

    anime = Anime.query.filter_by(anime_name=anime_name).first_or_404()
    
    你行吗

    anime = ss.query(Anime).filter_by(anime_name=anime_name).first()
    
    如果未找到变量
    anime
    ,则该变量为
    None
    (如您在数据库中所说为空),因此当尝试访问
    None
    id
    时,
    AttributeError

    顺便说一句,我建议您使用扩展来处理所有数据库连接逻辑,并公开一些有用的函数,如“.first\u或\u 404”。 有了它,您的代码将成为

    anime = Anime.query.filter_by(anime_name=anime_name).first_or_404()
    
    你行吗

    anime = ss.query(Anime).filter_by(anime_name=anime_name).first()
    
    如果未找到变量
    anime
    ,则该变量为
    None
    (如您在数据库中所说为空),因此当尝试访问
    None
    id
    时,
    AttributeError

    顺便说一句,我建议您使用扩展来处理所有数据库连接逻辑,并公开一些有用的函数,如“.first\u或\u 404”。 有了它,您的代码将成为

    anime = Anime.query.filter_by(anime_name=anime_name).first_or_404()
    


    您可以在except块内显示代码吗?@alKid我添加了try except子句和Tracebck msg。您可以在except块内显示代码吗?@alKid我添加了try except子句和Tracebck msg。您可以在except块内显示代码吗?@alKid我添加了try except子句和Tracebck msg。您可以在except块内显示代码吗block?@alKid我添加了try-except子句和Tracebck-msg。很抱歉误导您,我的意思是actor\u-quotes表是空的,而不是整个数据库。我可以确认这不是由空表引起的,至少不只是:案例1:表动画注释和演员引号是空的,而且它可以正常工作()。案例2:与案例1几乎相同,结果显示错误,但页面正常。@kxxoling ok,但抛出该错误(NoneType没有属性)唯一的解释是
    动画
    对象为
    。当查询未找到任何记录时,就会发生这种情况。不管什么原因。:)是的,这是最奇怪的地方,因为页面总是成功呈现,所以动画对象可以是空的。我猜这些台词可能会表演两次,第一次一切正常,第二次一切都是空的。很抱歉误导你,我的意思是演员表是空的,而不是整个数据库。我可以确认这不是由空表引起的,至少不只是:案例1:表动画注释和演员引号是空的,而且它可以正常工作()。案例2:与案例1几乎相同,结果显示错误,但页面正常。@kxxoling ok,但抛出该错误(NoneType没有属性)唯一的解释是
    动画
    对象为
    。当查询未找到任何记录时,就会发生这种情况。不管什么原因。:)是的,这是最奇怪的地方,因为页面总是成功呈现,所以动画对象可以是空的。我猜这些台词可能会表演两次,第一次一切正常,第二次一切都是空的。很抱歉误导你,我的意思是演员表是空的,而不是整个数据库。我可以确认这不是由空表引起的,至少不只是:案例1:表动画注释和演员引号是空的,而且它可以正常工作()。案例2:与案例1几乎相同,结果显示错误,但页面正常。@kxxoling ok,但抛出该错误(NoneType没有属性)唯一的解释是
    动画
    对象为
    。当查询未找到任何记录时,就会发生这种情况。不管什么原因。:)是的,这是最奇怪的地方,因为页面总是成功呈现,所以动画对象可以是空的。我猜这些台词可能会表演两次,第一次一切正常,第二次一切都是空的。很抱歉误导你,我的意思是演员表是空的,而不是整个数据库。我可以确认这不是由空表引起的,至少不只是:案例1:表动画注释和演员引号是空的,而且它可以正常工作()。案例2:与案例1几乎相同,结果显示错误,但页面正常。@kxxoling ok,但抛出该错误(NoneType没有属性)唯一的解释是
    动画
    对象为
    。当查询未找到任何记录时,就会发生这种情况。不管什么原因。:)是的,这是最奇怪的地方,因为页面总是成功呈现,所以动画对象可以是空的。我猜这些台词可能表演了两次,第一次一切正常,第二次一切都是空的。