我正在用Flask和Sqlalchemy构建一个应用程序。我的app.py
文件开始如下:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
from models import User
我models.py
的样子是这样的:
from app import db
class User
....
所以当我运行时python app.py
,出现错误消息“无法导入用户名”。我猜某处有一个循环导入,我不知道如何解决它。
但是如果我run.py
用
from app import app
app.run()
一切正常。但是,为什么这会中断循环导入?我听不懂
您做对了:这是一个循环导入问题。
解决这个问题的方法是shared.py
在根目录中有另一个文件。在该文件中,创建数据库对象,
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
在中app/init.py
,不要创建新的db对象。相反,做
from shared import db
db.init_app(app)
在您想使用db对象的任何地方,包括您的模型文件,都可以从中导入它shared.py
:
from shared import db
# do stuff with db
这样,共享文件中的对象将使用应用程序上下文进行初始化,并且没有循环导入的机会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句