Python SQLAlchemy的“非类型错误”错误:

Python SQLAlchemy的“非类型错误”错误:,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我是烧瓶的初学者。我已经创建了一个由mymodels.py定义的sqlite数据库,并用值填充它。我想使用search_var.html文件打印后端数据库表中的所有内容:line_info。然而,我得到一个错误,请帮助 我的模特 我从Python shell中添加了一些虚拟值以进行测试: from app import db, app from app.models import line_info l = line_info(EUSOL_id='abcdeg', acc_id='asgd',

我是烧瓶的初学者。我已经创建了一个由mymodels.py定义的sqlite数据库,并用值填充它。我想使用search_var.html文件打印后端数据库表中的所有内容:line_info。然而,我得到一个错误,请帮助

我的模特

我从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>]
我的“搜索变量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 %}
我的目录树

/flask_beta
|__/app
|     |__models.py
|     |__routes.py
|     |__/templates
|                |__search_var.html
|__app.db
|__run.py
|__config.py

这是因为使用None初始化行_信息,而不是从模型文件导入它

我希望下面的代码能够工作

from flask import render_template
from app import app 

from models import Line_info

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

if __name__ == '__main__':
    app.run(debug = True)
您不能将模型线命名为\u info,然后在实例列表中使用相同的名称。line_info现在是一个局部变量,它不能也是全局名称,这就是为什么删除line_info=None行时会出现UnboundLocalError异常

为行_info.query.all结果使用其他名称。您不需要先将任何内容设置为“无”:

您仍然可以在模板中使用line_info,尽管也不推荐这样做

相反,我建议您重命名模型以遵循;使用CamelCase,大写首字母,无下划线:

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

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

在执行line\u info.query.allo之前,您将设置line\u info=None。因此,您将定义line\u info,然后在将来导入line\u info,在发布之前验证并测试您的问题。您在类名中的输入错误使我们在这里做了一些超出需要的假设。是的,很抱歉输入错误如果您在模型和局部变量中使用相同的名称,那么如果没有行_info=None,您将得到一个UnboundLocalError异常,这就是为什么你可能首先添加了这一行。注意:OP更改了他们的帖子,模型也被命名为line_info。谢谢,我已经将line_info更改为LineInfo。但是,从models import LineInfo ModuleNotFoundError导入模型时出错:没有名为“models”的模块。有线索吗?我已经发布了目录树。Thanks@Bitsy例如我不知道你的结构是什么。我怀疑您可能想使用从.models导入。。。但是您的其他导入表明您对软件包和直接模块导入感到困惑。@Bitsy:如果应用程序是软件包app/\u u init\u_u;.py,那么一定要使用from app.models导入。。。或者从。模型导入。。。。
/flask_beta
|__/app
|     |__models.py
|     |__routes.py
|     |__/templates
|                |__search_var.html
|__app.db
|__run.py
|__config.py
from flask import render_template
from app import app 

from models import Line_info

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

if __name__ == '__main__':
    app.run(debug = True)
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)
class LineInfo(db.Model):
    # ...