语境:
蟒蛇 3.6
烧瓶
flask_restful
flask_sqlalchemy
Objective:在第一次请求flask restful api之前创建数据库表,避免模型之间的循环依赖。
问题:当我执行第一个请求时,@app.before_first_request
按预期调用,但似乎正在考虑包含循环依赖:
File "./app.py", in create_tables
from models.uf_model import UfModel
File "home/server/models/uf_model.py", in <module>
from models.cidade_model import CidadeModel
File "/home/server/models/cidade_model.py", in <module>
from models.uf_model import UfModel
ImportError: cannot import name 'UfModel'
我的问题:即使使用app_context(),如类似问题中所建议的那样,循环依赖也没有解决。如何解决?我究竟做错了什么?
我的代码:
数据库.py:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
uf_model.py 一个 uf 有许多 cidades
from db import db, filter_query
from datetime import datetime
from models.cidade_model import CidadeModel
class UfModel(db.Model):
__tablename__ = 'uf'
unfe_id = db.Column(db.Integer, primary_key=True)
cidades = db.relationship('CidadeModel', backref='unfe_cidades', lazy=True, uselist=False)
为了轻松找到cidades给定的所有内容uf,我创建了这种关系。
cidade_model.py 一个 cidade 只有一个 uf
from db import db, filter_query
from datetime import datetime
from models.uf_model import UfModel
class CidadeModel(db.Model):
__tablename__ = 'cidade'
cida_id = db.Column(db.Integer, primary_key=True)
cida_unfe_id = db.Column(db.Integer, db.ForeignKey('uf.unfe_id'), nullable=False, index=True)
uf = db.relationship('UfModel')
为了轻松找到uf给定的cidade,我创建了这种关系。
应用程序.py:
from db import db
app = Flask(__name__)
api = Api(app)
@app.before_first_request
def create_tables():
with app.app_context():
from models.uf_model import UfModel
from models.cidade_model import CidadeModel
db.create_all()
if __name__ == '__main__':
# some resources api.add_resource
db.init_app(app)
白板的微信
相关分类