Flask数据库——分开Models和解决循环引用 - Go语言中文社区

Flask数据库——分开Models和解决循环引用


分开models目的:为了让代码更加方便的管理

项目代码描述:
models.py

# -*- coding:utf-8 -*-
from app import db

class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

app.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
from models import Article

app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)

db.create_all()

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

点击运行项目后报错:

ImportError: cannot import name 'db' from 'app'

问题原因: Flask中的循环引用
Alt
解决方法: app引用model本身就是我们需要达到的目的,所有只有将db文件进行分离
Alt

  1. 添加文件 exts.py
# -*- coding:utf-8 -*-

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
  1. 修改 models.py 中的db导入文件
# -*- coding:utf-8 -*-

from exts import db

class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
  1. 修改文件 app.py
from flask import Flask
import config
from models import Article
from exts import db

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
app.app_context().push()

db.create_all()

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

db此时需要利用另外语句进行初始化

db.init_app(app)
app.app_context().push()
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_39564555/article/details/96324108
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-19 10:10:52
  • 阅读 ( 1420 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢