【问题标题】:flask-sqlalchemy: import models going wrongflask-sqlalchemy:导入模型出错
【发布时间】:2014-11-01 18:26:12
【问题描述】:

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

一切都很完美。但是为什么这会破坏循环导入?这个我看不懂。

【问题讨论】:

  • 这些文件中是否使用了其他导入?

标签: python flask sqlalchemy


【解决方案1】:

你没看错:这是一个循环导入问题。

我解决这个问题的方法是在根目录中有另一个文件,shared.py 文件。在该文件中,创建数据库对象,

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()

在您的app/init.py 中,不要创建新的数据库对象。相反,做

from shared import db
db.init_app(app)

在任何你想使用 db 对象的地方,包括你的模型文件,从shared.py导入它:

from shared import db
# do stuff with db

这样,共享文件中的对象就已经用应用上下文进行了初始化,没有机会循环导入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多