Python,Flask,SQLAlchemy:无法从模型导入

kur*_*tgn 4 python import sqlalchemy models

我有一个奇怪的问题.

我正在使用SQLAlchemy构建Flask应用程序.我有一个模型文件,即models.py.我有一个用户模型.

如果我打开"views.py"并插入一个字符串

import models
Run Code Online (Sandbox Code Playgroud)

然后使用用户模型

u=models.User.query.filter_by(name='John',password='Doe').first()
Run Code Online (Sandbox Code Playgroud)

一切正常.

但如果不是"进口模式",我会说

from models import User
Run Code Online (Sandbox Code Playgroud)

Python崩溃并说:

ImportError: cannot import name User
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

Sin*_*ion 8

你最有可能进行循环导入; 你的,让我们说'app'模块:

# app.py
import models
...

def doSomething():
    models.User....
Run Code Online (Sandbox Code Playgroud)

但你的models模块也进口app

import app

class User:
    ...
Run Code Online (Sandbox Code Playgroud)

由于models导入appapp导入models,python还没有modelsapp尝试导入时完成导入models.User; 在User类尚未定义(还).要么打破循环导入(确保models不导入任何也导入的东西models),要么你只需要使用models.User而不是更短的Userin app.

  • 惊人的答案。谢谢,你节省了我的时间:)。继续做好工作。 (2认同)

Vin*_*ent 5

代替

from models import User
Run Code Online (Sandbox Code Playgroud)

使用

from models import *
Run Code Online (Sandbox Code Playgroud)

  • 由于某种原因为我工作。我很想知道为什么这有效? (2认同)