我的烧瓶应用程序具有以下结构:
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
我该如何解决这个问题?
这是一个可以为您服务的解决方案。
创建一个名为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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句