我正在开发一个 Flask 应用程序。它仍然相对较小。我只有一个 app.py 文件,但因为我需要进行数据库迁移,所以我使用本指南将其分为 3 个:
https://realpython.com/blog/python/flask-by-example-part-2-postgres-sqlalchemy-and-alembic/ https://realpython.com/blog/python/flask-by-example-part-2-postgres-sqlalchemy-and-alembic/
但是,我现在无法运行我的应用程序,因为应用程序和模型之间存在循环依赖关系。
app.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask import render_template, request, redirect, url_for
import os
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DB_URL']
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.debug = True
db = SQLAlchemy(app)
from models import User
... routes ...
if __name__ == "__main__":
app.run()
模型.py:
from app import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return self.username
管理.py:
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == "__main__":
manager.run()
它们都在同一个目录中。当我尝试跑步时python app.py
要启动服务器,我收到一个错误,该错误肯定显示了循环依赖关系(这是非常明显的)。我在遵循指南时是否犯了任何错误,或者指南是错误的?我怎样才能将其重构为正确的?
多谢。
编辑:回溯
Traceback (most recent call last):
File "app.py", line 14, in <module>
from models import User
File "/../models.py", line 1, in <module>
from app import db
File "/../app.py", line 14, in <module>
from models import User
ImportError: cannot import name User