在之前我们测试中,所有语句都在同一个文件中,但随着项目越来越大,管理起来有所不便,所以将Models分离.
基本的文件结构如下

\—–app.py
\—–models.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from models import Articleapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./Article.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
db = SQLAlchemy(app)# db.create_all()
@app.route('/')
def index():return 'index'if __name__ == '__main__':#最好关闭debugapp.run()
from app import db
class Article(db.Model):__tablename__='article'id = db.Column(db.Integer,primary_key=True)title = db.Column(db.String(100),nullable=False)content = db.Column(db.Text,nullable=False)

但此时会出现循环引用的错误,也就是你需要我的,我需要你的,错误如下图

解决方法

新建一个exts.py文件
\—–app.py
\—–models.py
\—–exts.py

exts.py文件内容如下

from flask_sqlalchemy import SQLAlchemy
#此时先不传入app
db = SQLAlchemy()

app.py更改如下
去掉from flask_sqlalchemy import SQLAlchemy
增加db.init_app(app)

from flask import Flask
from models import Articleapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./Article.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
db.init_app(app)# db.create_all()
@app.route('/')
def index():return 'index'if __name__ == '__main__':#最好关闭debugapp.run()

models.py

from exts import db
class Article(db.Model):__tablename__='article'id = db.Column(db.Integer,primary_key=True)title = db.Column(db.String(100),nullable=False)content = db.Column(db.Text,nullable=False)

Flask-分开Models解决循环引用相关推荐

  1. 【C++】智能指针简述(五):解决循环引用的weak_ptr

    总结一下前文内容: 1.智能指针通过RAII方法来管理指针:构造对象时,完成资源初始化;析构对象时,对资源进行清理及汕尾. 2.auto_ptr,通过"转移所有权"来防止析构一块内 ...

  2. python垃圾回收机制为什么标记能解决循环引用问题_Python 垃圾回收机制和如何解决循环引用...

    引用计数:是一种垃圾收集机制,而且也是一种最直观,最简单的垃圾收集技术, 当一个对象的引用被创建或者复制时,对象的引用计数加 1:当一个对象的引用被销毁时,对象的引用计数减 1:当对象的引用计数减少为 ...

  3. weak_ptr 的几个应用场景 —— 观察者、解决循环引用、弱回调

    weak_ptr 弱智能指针 Effecvive Modern C++ 使用std::weak_ptr 来代替可能空悬的 std:: shared_ptr . std::weak_ptr 可能的用武之 ...

  4. NSTimer解决循环引用常见方法

    1. NSTimer的使用 常见使用场景如下: - (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColo ...

  5. js深拷贝,解决循环引用

    概念 前提为拷贝类型为引用类型的情况下: 浅拷贝是拷贝一层,属性为对象时,浅拷贝是复制,两个对象指向同一个地址 深拷贝是递归拷贝深层次,属性为对象时,深拷贝是新开栈,两个对象指向不同的地址 浅拷贝的方 ...

  6. php 解决循环引用,excel循环引用如何解决

    excel循环引用如何解决? 方法一 需要找到"excel选项",这个地方在Office 2003版本里的"工具"选项里,而在Office 2007版本里不好找 ...

  7. java中出现循环问题如何解决_java如何解决循环引用

    Excel 循环引用产生的原因及解决方法 来源:excel 格子社区 我们打开 ... (Garbage Collection Thread) , 来跟踪每一块分配出去的内存空间, Java 虚拟机 ...

  8. block为什么用copy以及如何解决循环引用

    在完成项目期间,不可避免的会使用到block,因为block有着比delegate和notification可读性更高,而且看起来代码也会很简洁.于是在目前的项目中大量的使用block. 之前给大家介 ...

  9. 解决循环引用--弱引用weak_ptr

    循环引用:  引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象.一个简单的例子如下: class parent; class children;typedef sh ...

最新文章

  1. 使用git 上传自己代码
  2. 分布式、高并发、多线程,到底有什么区别?
  3. 第12章 存储器的保护
  4. Java9都快发布了,Java8的十大新特性你了解多少呢?
  5. 手持移动扫描终端 PDA移动开单系统-批发零售管理
  6. 开源项目的网址[不定时更新]
  7. 可计算行与计算复杂性多带图灵机实例
  8. ESP32 Camera ov2640锁死问题
  9. [转载]JTree 编辑、删除、添加节点_-Chaz-_新浪博客
  10. linux 火狐 jre插件,[原]再谈Firefox安装java插件的问题
  11. 微信公众号的类型和功能
  12. 通用计算机(PC)和手机是否属于嵌入式设备?(嵌入式的定义)-杂谈
  13. 微信H5、公众号开发,域名重定向
  14. matlab中在同一图形窗口中绘制出一个周期内的正弦曲线和余弦曲线,多选(3分) 在一个图形窗口同时绘制[0,2π]的正弦曲线、余弦曲线,可以使用命令( )。...
  15. 在 PHP 中从数组中删除一个元素
  16. 《D o C P》学习笔记(3 - 1)Regular Expressions, other languages and interpreters - Lesson 3
  17. 语言信号处理 总复习 第三讲 *秋昊
  18. 无心剑七绝147首[1994年~2021年]
  19. 学计算机激励标语口号,激励学习标语
  20. GameMei 简网APP工场

热门文章

  1. java完整版记事本_求java记事本完整版
  2. 第五天2017/04/06(下午1:C、C++混合编程 与 #ifdef __cplusplus extern C{ })
  3. Java的标签--弱化的goto
  4. EasyJWeb-Velocity脚本简明教程
  5. 使用OpenCV进行图像创建、保存和复制
  6. 多分类问题中每一类的Precision-Recall Curve曲线以及ROC的Matlab画法
  7. 简明python教程 --C++程序员的视角(六):输入输出IO
  8. 概率统计:第七章 参数估计
  9. 中国计算机学会CCF推荐国际学术会议和期刊目录-交叉/综合/新兴
  10. 图像处理(十)基于特征线的图像变形-Siggraph 1992