我的烧瓶应用程序中有以下结构:
app.py
app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
db = SQLAlchemy(app)
from models import *models.py
from app import db它工作得很好,直到我想在app.py以外的文件中对模型执行读/写操作。我试图在文件Trackorder中导入模型tasks.py,但得到了以下错误:
ImportError: cannot import name TrackOrder所以我改变了结构:
__init__.py
app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
db = SQLAlchemy(app)但这使得app和db在app.py和models.py中不可用。
File "app.py", line 21, in <module>
    from models import *
  File "/home/nish/repos/stage/voylla_api/models.py", line 16, in <module>
    class Product(db.Model):
NameError: name 'db' is not defined
##after commenting models.py:
Traceback (most recent call last):
  File "app.py", line 210, in <module>
    @app.route('/')
NameError: name 'app' is not defined我怎样才能解决这个问题?
发布于 2014-12-29 08:45:32
这里有一个可能对你有用的解决方案。
创建一个名为core.py的文件(或任何您想要命名的文件):
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()现在在app.py
from core import db
app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
# Instead of this line: db = SQLAlchemy(app)
# Use this approach to initialize db
db.init_app(app)在您的models.py中,可以使用此导入from core import db
这是基于下面的示例:https://pythonhosted.org/Flask-SQLAlchemy/api.html
https://stackoverflow.com/questions/27683951
复制相似问题