Flask视图无法访问模型类,即使它是在同一个fi中定义的

2024-09-28 23:38:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的单文件应用程序测试使用SQLAlchemy与烧瓶。getResult视图使用MainResult模型。但是,导航到/getResult会引发NameError: global name 'MainResult' is not defined。该类与视图定义在同一个文件中,所以为什么会出现此错误?你知道吗

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost/testDB'
db = SQLAlchemy(app)

@app.route('/getResult')
def getResult():
    newEntry = MainResult(metadata_key='test')
    db.session.add(newEntry)
    db.session.commit()
    return 'Hello World!'

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

class MainResult(db.Model):
    metadata_key = db.Column(db.String(128), primary_key=True)

Tags: 文件keynamefromimport视图appflask
1条回答
网友
1楼 · 发布于 2024-09-28 23:38:08

Python按顺序执行文件。app.run永远运行。所以文件中app.run之后的任何内容都不会被执行,直到服务器停止。MainResult是在应用程序运行之后才定义的,因此视图无法看到它。将其移到__main__块上方。你知道吗

class MainResult(db.Model):
    ...

# should be the last thing in the file
if __name__ == '__main__':
    app.run()

最好使用新的flask命令来运行dev服务器。在这种情况下不再需要__main__块。你知道吗

FLASK_APP=my_file.py flask run

相关问题 更多 >