为什么我在尝试导入用户模型时会收到此 ImportError?

Why am I getting this ImportError trying import users model?

在同一目录级别有两个文件,application.pymodels.py,第一个包含蓝图注册、初始登录和索引路由以及辅助数据库模型。

型号:

# -*- coding: utf-8 -*-
from src.application import db
from flask_login import UserMixin

class Usuarios(db.Model,UserMixin):

    __tablename__ = 'usuarios'

    id = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(), index=True)
    usuario = db.Column(db.String(), index=True, unique=True)
    email = db.Column(db.String(), unique=True)
    senha = db.Column(db.String())
    stats = db.Column(db.Boolean())
    role = db.Column(db.String())
    foto = db.Column(db.String())
    artigos = db.relationship('Artigos',backref='usuario',uselist=False)

class Artigos(db.Model):

    __tablename__ = 'artigos'

    id = db.Column(db.Integer, primary_key=True)
    titulo = db.Column(db.String(), index=True)
    id_usuario = db.Column(db.Integer,db.ForeignKey('usuarios.id'))
    text = db.Column(db.Text())
    data = db.Column(db.DateTime())
    stats = db.Column(db.Boolean())

申请:

# coding: utf-8
from flask import Flask, url_for, redirect, render_template, request, abort, Blueprint, session, jsonify
from flask_login import LoginManager, logout_user, current_user, login_user, login_required
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import os

app = Flask(__name__)

app.secret_key = os.urandom(24)
app.config['SQLALCHEMY_DATABASE_URI'] = "postgres://postgres:postgres@192.168.10.102:5432/ntest"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

#Flask_Login
login_manager = LoginManager()
login_manager.init_app(app)

#Flask_Alchmey e migrate
db = SQLAlchemy(app)
migrate = Migrate(app, db)

from src.models import Usuarios

....

自从我决定使用 ORM 并迁移我的数据库以来,我一直面临这个无聊的 ImportError 问题。我不知道拆分这些文件或调用他们的导入。任何人都可以提供帮助或建议吗?

(test) C:\Users\PC\Desktop\Python\test\src>python application.py
Traceback (most recent call last):
  File "application.py", line 22, in <module>
    from src.models import Usuarios
  File "CC:\Users\PC\Desktop\Python\test\src\models.py", line 2, in <module>
    from src.application import db
  File "C:\Users\PC\Desktop\Python\test\src\application.py", line 22, in <module>
    from src.models import Usuarios
ImportError: cannot import name Usuarios

您有循环导入,其中 application.pymodels.py 导入,但 models.py 需要从 application.py 导入。

这在 flask 中很常见。典型的解决方案是使用 application factory 模式。