flask-sqlalchemy:导入模型出错了

时间:2014-11-01 18:26:13

标签: python flask sqlalchemy

我正在使用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()

一切都很完美。但为什么这会打破循环导入呢?我无法理解这一点。

1 个答案:

答案 0 :(得分:2)

你做得对:这是一个循环导入问题。

我解决这个问题的方法是在根目录中使用另一个文件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

这样,共享文件中的对象将使用应用程序上下文进行初始化,并且无法进行循环导入。