SQLAlchemy 的“NoneType 错误”错误:

比西

我是 Flask 的初学者。我创建了一个由我的models.py定义sqlite 数据库用 values 填充了它我想使用 search_var.html 文件打印后端数据库表中的所有内容:line_info但是,我收到一个错误,请帮助

我的模型.py

from app  import db
class line_info(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    EUSOL_id = db.Column(db.VARCHAR (255), nullable=True)
    acc_id = db.Column(db.VARCHAR (255), nullable=True)
    acc_name=db.Column(db.String(20), nullable=True)
    reasons = db.Column(db.String(100), nullable=True)
    genbank = db.Column(db.String(100), nullable=True)

    def __init__(self, EUSOL_id,acc_id,acc_name,reasons,genbank):
        self.EUSOL_id= EUSOL_id
        self.acc_id = acc_id
        self.acc_name = acc_name
        self.reasons = reasons
        self.genbank = genbank

我从 Python shell 添加了一些虚拟值来测试:

from app import db, app
from app.models import line_info

l = line_info(EUSOL_id='abcdeg', acc_id='asgd', acc_name='tomato_name', reasons='wild', genbank='NA')
db.app = app
db.init_app(app)
db.create_all()
db.session.add(l)
db.session.commit() 
line_info.query.all()
[<line_info 1>]

我的路线.py

from flask import render_template
from app import app

@app.route('/')
def search_func():
    line_info = None
    line_info = line_info.query.all()
    return render_template("search_var.html", line_info=line_info)

if __name__ == '__main__':
    app.run(debug = True)

我的“search_var.html”

{% extends "layout.html" %}
{% block title %}Search{% endblock %}
{% block main %}

   <h1>Lines</h1>
    {% for line in line_info %}
      <p>{{line_info.id}}</p>
    {% endfor %}

{% endfor %}

错误:

Traceback (most recent call last):
  File "/home/workstation1/flask_beta/my_venv/lib/python3.6/site-packages     /flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/workstation1/flask_beta/my_venv/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/workstation1/flask_beta/my_venv/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/workstation1/flask_beta/my_venv/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/workstation1/flask_beta/my_venv/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/workstation1/flask_beta/my_venv/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/workstation1/flask_beta/app/routes.py", line 9, in search_func
    line_info = line_info.query.all()
AttributeError: 'NoneType' object has no attribute 'query'

我的目录树

/flask_beta
|__/app
|     |__models.py
|     |__routes.py
|     |__/templates
|                |__search_var.html
|__app.db
|__run.py
|__config.py
马丁·彼得斯

您不能为模型line_info命名,然后对实例列表使用相同的名称。line_info现在是局部变量,它也不能是全局名称,这就是为什么UnboundLocalError在删除line_info = None行时会出现异常的原因

结果使用不同的名称line_info.query.all()您不需要首先设置任何内容None

from flask import render_template
from app import app
from model import line_info

@app.route('/')
def search_func():
    lines = Line_info.query.all()
    return render_template("search_var.html", line_info=lines)

您仍然可以line_info在模板中使用,尽管这也不是真正推荐的。

相反,我建议您重命名模型以遵循Python 命名约定使用CamelCase,带大写首字母,不带_下划线:

class LineInfo(db.Model):
    # ...

现在更容易与局部变量区分开来。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

美丽的汤NoneType错误

来自分类Dev

'NoneType'和'float'错误-如何避免NoneType

来自分类Dev

Scrapy + SQLAlchemy + MySQL错误

来自分类Dev

Flask SQLAlchemy分页错误

来自分类Dev

SQLAlchemy连接错误

来自分类Dev

sqlalchemy in_子句错误

来自分类Dev

SQLAlchemy 中的更新错误

来自分类Dev

Docker 错误 2002 SQLAlchemy

来自分类Dev

sqlalchemy 操作错误

来自分类Dev

Python Facebook“ NoneType对象错误”

来自分类Dev

BeautifulSoup / Python发生NoneType错误

来自分类Dev

TensorFlow 2.0 GradientTape NoneType错误

来自分类Dev

Spacy法语给出NoneType错误

来自分类Dev

Python Facebook“ NoneType对象错误”

来自分类Dev

BeautifulSoup / Python发生NoneType错误

来自分类Dev

NoneType对象不可迭代错误

来自分类Dev

如何处理 NoneType 错误

来自分类Dev

Flask Admin / SQLAlchemy Unicode错误

来自分类Dev

Flask Admin / SQLAlchemy Unicode错误

来自分类Dev

使用SqlAlchemy的连接条件错误

来自分类Dev

python烧瓶和sqlalchemy错误

来自分类Dev

生成器因NoneType错误而失败

来自分类Dev

BeautifulSoup无法正常工作,出现NoneType错误

来自分类Dev

错误:“ NoneType”对象没有属性“追加”

来自分类Dev

'Nonetype'对象没有属性ID错误

来自分类Dev

检索nonetype对象不是可重复的错误

来自分类Dev

TelegramBot错误。TypeError:“ NoneType”对象不可订阅

来自分类Dev

无法“承受负荷”。给出NoneType错误

来自分类Dev

属性错误:Nonetype没有属性“ group”