为什么我在尝试导入用户模型时会收到此 ImportError?
Why am I getting this ImportError trying import users model?
在同一目录级别有两个文件,application.py
和 models.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.py
从 models.py
导入,但 models.py
需要从 application.py
导入。
这在 flask
中很常见。典型的解决方案是使用 application factory 模式。
在同一目录级别有两个文件,application.py
和 models.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.py
从 models.py
导入,但 models.py
需要从 application.py
导入。
这在 flask
中很常见。典型的解决方案是使用 application factory 模式。