2

我试图db在我的 Flask 项目的一个模块中导入一个名为(SQLAlchemy 对象)的对象,以便在我的模型(models.py)中使用 SQLAlchemy。假设我的包被命名Foo并包含db他的文件中的对象__init__.py,当我尝试执行时from Foo import db,我收到以下错误:

ImportError: cannot import name db

我正在使用 Flask Blueprint 将我的项目分派到两个应用程序(仪表板和前端)中,每个应用程序都包含一个__init__.py文件。只有models.py抛出这个错误,我的视图文件中有一些导入(作为导入登录管理器),一切顺利。

知道它可能是什么吗?

更新:回溯

Traceback (most recent call last):
    File "run.py", line 4, in <module>
        from kuchiyose import app
    File "/path_to_project/kuchiyose/kuchiyose/__init__.py", line 60, in <module>
        from kuchiyose import dashboard, frontend
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/__init__.py", line 10, in <module>
        from dashboard import views
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/__init__.py", line 10, in <module>
        from dashboard import views
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/views.py", line 8, in <module>
        from kuchiyose.dashboard.models import User
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/models.py", line 3, in <module>
        from kuchiyose import db

ImportError: cannot import name db
4

3 回答 3

6

首先,感谢您的帮助。关于我的第二个问题:“如何在没有循环导入问题的情况下将 Flask 模型导入视图(使用 SQLAlchemy 时)”,我找到了解决方案。它包括将 SQLAlchemy 对象设置__init__.pymodels.py文件本身而不是应用程序文件中。有了它,您可以views.py毫无问题地将其导入文件中。

我的 models.py 文件,现在:

from kuchiyose import app
from flask.ext.sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)

还有我的views.py

from kuchiyose.dashboard import models
于 2013-04-13T19:49:32.700 回答
6

这是一个旧的,但在我的搜索中显示为最高结果。

我有一个项目在几个不同的地方有模型声明,而不是一个合并的 models.py 文件,所以这个解决方案并不理想。我发现在建立 db 对象之后导入您的视图也可以。

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config')

db = SQLAlchemy(app)

# Now Register routes
# db is now defined so app import db will now work)
from routes.user import user as user_routes
app.register_blueprint(user_routes)
于 2015-01-04T07:17:36.550 回答
4

似乎有循环进口:

  • kuchiyose/__init__.py从进口kuchiyose.dashboard.views
  • kuchiyose/dashboard/views.py从进口kuchiyose.dashboard.models
  • kuchiyose/dashboard/models.py从进口kuchiyose

有关更多信息,请参见Python 中的循环(或循环)导入...

于 2013-04-13T16:51:26.463 回答