刚开始结构是这样的
app
- init.py
- models.py
init.py是这样的
`
from flask import Flask
from flask-sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
`
models.py是这样的
`
from init import db
class User(db.Model):
pass
`
但这就导致了循环引用的问题。在调用init的时候会先导入models,但调用models的时候又会调用init。你调用我我调用你,就产生了一个死循环。这时候就需要把db的初始化提出来了。
把结构变成这样
app
- init.py
- models.py
- exts.py
在exts.py里初始化db
`
from flask-sqlalchemy import SQLAlchemy
# 不需要传入app
db = SQLAlchemy()
`
然后在init.py里把db的设置修改为
`
db.init_app(app)
`
在models.py里把db的设置修改为
`
from exts import db
`
这样就解决了flask循环引用的问题。