0、前言:学习这部分的前提是对python的面向对象有一定的了解,同时对MySQL有扎实的学习

1、Flask模型基础知识:

  • Flask模型
  • ORM

    (注意:在flask中用ORM可以实现SQL语句功能,但是并不意味着SQL语句不重要!)




  • 需要安装的包

    注意:在pip 下载的时候后面通过 -i 加的url是源,目的是提高下载速度
    注意:Flask是一个轻量级框架,它的很多功能都需要用插件

2、数据迁移:

  • 数据迁移的步骤

    • 1、安装好数据迁移包:flask-sqlalchemy 和 flask-migrate
    • 2、在exts.py 中初始化Migrate 和 SQLALchemy(ext.py 是设计出来专门存放flask插件的)
    • 3、在models 中定义好模型
    • 4、在views.py 中一定要导入models模块(from .mocels import *)
    • 5、配置好数据库(sqlite3或MySQL)
    • 6、执行数据迁移命令:
      • 首先要在cmd或pycharm的terminal进入项目目录(app.py所在的目录):

      • 指令输入:

      • flask db init 创建迁移文件夹migrates,只有在初始时调用一次

      • flask db migrate 生成迁移文件(会把继承自db.Model的类对应的内容转换为SQL语句)


        注意:这里我等好半天,才下载好驱动,多等会。

        上面的所有步骤完成之后,就可以继续执行下面的代码了。

      • flask db upgrade 执行迁移文件中的升级

        此时就能清晰看到表结构了,但是如果在model中修改了表结构,在数据库视图中是不会改变的,要想要数据库视图跟着改,就要做表迁移,所以最好一次就把表写好。【模型一旦改掉,就要做数据迁移,这样数据库当中的表才会跟着改动】
        重新迁移的方法: flask db migrate,执行完之后就能在文件列表的migrations中的versions中看到生成的新的py文件,打开该文件还能看到它上一个版本或者下一个版本,而且该文件的upgrade会记录发生的改变,然后执行 flask db upgrade 再回数据库中刷新下,就能看到数据库也会发生改变,如果要返回上一个版本,就再次执行flask db downgrade,然后刷新数据库就能看到数据库回到了上一个版本。如果执行了flask db downgrade 还想回到撤销前,就可以接着执行flask db downgrade,不用再执行flask db migrate了

      • flask db downgrade 相当于撤销对数据库执行的升级,如果执行了该命令,就要注意数据库和模型中的数据可能不同步的问题!

  • 数据迁移文件框架(该框架还是套用了“Flask项目拆分”的框架)

  • __init __ 程序

# __init__.py : 初始化文件,创建Flask应用
from flask import Flask
from .views import blue
from .exts import init_extsdef creat_app():app = Flask(__name__)# 注册蓝图app.register_blueprint(blueprint=blue)# 配置数据库db_uri = 'sqlite:///sqlite3.db'app.config['SQLALCHEMY_DATABASE_URI'] = db_uriapp.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False    # 禁止对象追踪修改# 初始化插件init_exts(app=app)return app
  • models 程序
# models.py : 模型,数据库'''模型      ===      数据库类        ——>     表结构类属性     ——>    表字段一个对象   ——>    表的一行数据
'''from .exts import db# 模型Model:类
# 必须继承 db.Model User才能从普通的类变成模型
class User(db.Model):# 表名__tablename__ = 'tb_user'   # 数据迁移就是让模型变成表,ORM就是让类变成模型# 定义表字段id = db.Column(db.Integer, primary_key=True, autoincrement=True)name = db.Column(db.String(30), unique=True, index=True)age = db.Column(db.Integer, default=1)sex = db.Column(db.Boolean, default=True)salary = db.Column(db.Float, default=100000, nullable=False)# db.Column : 表示字段
# db.Integer : 表示整数
# primary_key=True : 主键
# autoincrement=True : 自增长
# db.String(30) : 可变字符串
# unique=True : 唯一约束
# index=True : 设置普通索引
  • exts 程序
# exts.py:插件管理
# 拓展第三方插件# 1. 导入第三方插件
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate# 2. 初始化
db = SQLAlchemy()   # ORM
migrate = Migrate() # 数据迁移# 3. 和app对象绑定
def init_exts(app):db.init_app(app=app)migrate.init_app(app=app, db=db)

其余程序和“Flask项目拆分”的框架中程序一样,但是要注意:在views.py 中一定要导入models模块(from .mocels import *)


2、数据迁移总结:

  • 上面的步骤看着非常复杂,期间还夹杂一些插件下载操作。
  • 当我们真的配置好flask模型之后,每次调用无非就是复制模型,然后在模型的基础上添加内容,之后的数据迁移就很简单了。
  • 有了模型之后的数据迁移:
    • 1、在models中写好数据表结构
    • 2、打开pycharm的终端,将整个项目文件拖进终端(目的是从该项目文件中打开终端)
    • 3、flask db init 创建迁移文件夹migrates,只有在初始时调用一次
    • 4、flask db migrate 生成迁移文件(会把继承自db.Model的类对应的内容转换为SQL语句)
    • 5、flask db upgrade 该命令执行结束后,表就会生成,但是表中这个时候是没有数据的。(此时就能从MySQL中看到你数据库中的表)如果要对表进行“增删改查”要进入views中进行操作。

Python轻量级Web框架Flask(5)——Flask模型基础和数据迁移相关推荐

  1. Python轻量级Web框架Flask(4)——Flask会话技术和Flask模板语言

    1.客户端会话技术: 会话:服务器端和客户端之间的交互 一个服务器可以被多个浏览器访问,他们之间是通过http协议来完成访问的(1.先请求,后响应:2.响应后会断开连接:3.一次请求就结束了),coo ...

  2. Python轻量级WEB框架web.py之操作数据库

    以MYSQL做示例: pip install pymysql 如果安装超时或其他原因不成功,选择下面的站点来安装 pip install -i https://pypi.douban.com/simp ...

  3. Python轻量级WEB框架web.py,模板使用

    首先是安装web.py,方法有几种,如下 pip install web.py==0.40 easy_install web.py 或者是下载http://webpy.org/install.zh-c ...

  4. Python轻量级Web框架:Bottle库

    Bottle是一个超轻量级的python库.说是库,其本身只由一个4000行左右的文件构成,并且不需要任何依赖,只靠python标准库即可运作. 和它本身的轻便一样,Bottle库的使用也十分简单.相 ...

  5. Web框架 Bottle 、Flask 、Tornado

    Bottle Flask Tornado Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标 ...

  6. python主流web框架识别

    想学习web框架,又想熟悉python,问题来了,有没有极简的数据来支撑快速开发,特来研究 不能去研究几十个,没时间,研究主流的即可 Django.Tornado.Flask.Twisted. 所谓网 ...

  7. 【python轻量级中台框架开发第一层】 ORM flask-sqlacodegen

    @[python](python轻量级中台框架开发第一层 ORM flask-sqlacodegen) 欢迎阅读,点评指正 任何系统或框架都离不开数据存储.所以任何的开始都是要保存下我们需要的东西. ...

  8. python bottle web框架简介

    Bottle 是一个快速,简单,轻量级的 Python WSGI Web 框架.单一文件,只依赖 Python 标准库 .bottle很适合会一点python基础的人使用,因为这框架用起来很简单,只要 ...

  9. python搭建django框架,Python之Web框架Django项目搭建全过程

    Python之Web框架Django项目搭建全过程 IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 注:可通过pip fre ...

最新文章

  1. php在函数使用正则表达式,php正则表达式以及正则函数的使用
  2. 世界顶级AI大神综述深度学习
  3. android 减少布局层级,Android 布局优化
  4. 关于微信授权与登录的相关操作(纯手敲)
  5. 设计模式笔记(19)---观察者模式(行为型)
  6. GIAC 2020 全球互联网架构大会演讲实录:基于TarsGo的微服务技术架构实践
  7. 修改gitignore 后不起作用
  8. Skywalking-13:Skywalking模块加载机制
  9. 2021年上半年系统集成项目管理工程师案例分析真题及答案解析
  10. flink报错:typeutils.CompositeType$InvalidFieldReferenceException Cannot reference field by field expre
  11. a.hashCode() 有什么用?与 a.equals(b)有什么关系?
  12. 发现孩子做作业用计算机,儿童不宜长期使用计算器做作业
  13. 大漠插件最新版dm7.2135
  14. android蓝牙红外,单片机蓝牙+红外学习转发模块源程序 实现用安卓手机控制所有家电...
  15. 【转载】完全二叉树的高度为什么是对lgN向下取整
  16. 关于单片机引脚的别名定义的正确语法
  17. MFI认证——苹果MFI账号申请
  18. python 选择文件对话框插件_Python DearPyGui 常用控件一
  19. 【分页存储管理】将十六进制的虚拟地址0A5C、103C、4251转换成物理地址
  20. 计算机相关知识小故事,转一个有意思的计算机小故事

热门文章

  1. python不能创建字典的是_第26 p,不做“单身狗”,Python中的字典
  2. PIP出现Fatal error in launcher:
  3. 新手站长如何快速查看心仪的网站使用的什么模板和插件?
  4. 蓝桥杯第十届3求阴影面积
  5. ssm+Vue计算机毕业设计幸福小区健身器材租赁系统(程序+LW文档)
  6. 计算机组装涉及哪些硬件,组装一台电脑需要哪些配件_电脑硬件组装一台电脑需要什么零件...
  7. 强一致性、顺序一致性、弱一致性和共识
  8. Python 生成临时文件和目录 -tempfile
  9. Vue路由的使用详解
  10. 关于区块链的一点感悟