首页 > 其他分享 >13、flask-模型-models-模型配置使用-数据迁移

13、flask-模型-models-模型配置使用-数据迁移

时间:2024-07-26 23:50:55浏览次数:10  
标签:13 flask app py db init 迁移 模型

1.配置数据库

__init__.py

#__init__.py: 初始化文件、用来创建flask应用


from flask import Flask
from .views import blue     #蓝图
from .exts import init_exts  #导入插件模块 exts.py


def create_app():
    app = Flask(__name__)   #创建flask应用

    #注册蓝图
    app.register_blueprint(blueprint=blue)

    # 配置数据库
    db_uri = 'sqlite:///sqlite3.db' #数据库路径,自动会创建数据库文件sqlite3.db
    app.config['SQLALCHEMY_DATABASE_URI'] = db_uri  #配置数据库连接的路径
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False    #关闭追踪数据库的修改

    # 初始化插件 exts.py
    init_exts(app=app)

    return app

2.配置第三方插件

App目录下创建exts.py文件

# exts.py :插件管理
# 扩展的第三方插件

# 1. 导入
from flask_sqlalchemy import SQLAlchemy #做ORM关系的映射
from flask_migrate import Migrate   #做数据迁移

#2. 初始化插件
db = SQLAlchemy()   #ORM
migrate = Migrate() #数据迁移

# 3.和app对象绑定
def init_exts(app):
    db.init_app(app)
    migrate.init_app(app,db)

3.模型models.py

# 模型数据库

from .exts import db    #导入db对象

# 模型     对应数据库中的     数据库
# 类                       表结构
# 类属性                    表字段
# 对象                      表的一行数据



# 模型: 类名
# 必须继承:db.Model  才是 一个模型
class User(db.Model):
    # 表名
    __tablename__ = 'tb_user'
    # 字段
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), unique=True, index=True)
    age = db.Column(db.Integer, default=1)
    sex = db.Column(db.Boolean, default=True)
    salary = db.Column(db.Float, default=10000, nullable=False)

# db.Column :表示字段
# db.Integer :表示字段的类型 整数类型
# primary_key=true : 表示主键
# autoincrement=true : 表示自增
# db.String(50) : 表示字段的长度 相当于varchar(50)
# index=True : 表示创建索引
# db.Boolean : 表示布尔类型
# default=1 : 表示默认值
# db.Float : 表示浮点类型
# nullable=False : 表示不能为空
  • 模型创建好后就要执行数据迁移

注意

要确保已安装:Flask-Migrate
确保已在__init__.py中配置好数据库
在views.py中导入models模块:from .models import *
要在项目的根目录下

  1. 执行以下命令:
#1.先创建迁移文件夹、该命令只需执行一次即可
#执行后会生成`instance`和migrations 两个目录
$ flask db init

#2. 生成迁移文件
# 会去找继承 db.Model 的类,执行类中的内容
# 如果不是继承 db.Model 的话就无法执行生成迁移文件
# 会在 instance 下生成 sqlite3.db 数据库文件(在__init__.py中配置数据库时定义的变量名)
# 会在 migrations/versions 下生成xxxx.py 迁移文件
$ flask db migrate

#3.执行迁移文件中的升级
# 将数据结构变为最新的迁移文件 xxxx.py 中的语句执行 创建表的操作
$ flask db upgrade


#4.执行迁移文件中的降级(没必要不需要执行)
# 撤销上一步的升级 - 就是回退到上一个迁移文件(xxx.py)中的数据结构
flask db downgrade
  • 注意:如果models.py中模型变化了(如新增字段货表结构修改),都需要重新做数据迁移-第2步,和数据升级-第3步-(flask db init 不需要再执行)

标签:13,flask,app,py,db,init,迁移,模型
From: https://www.cnblogs.com/littlecc/p/18326477

相关文章

  • 【活动预告】Easysearch 结合大模型实现 RAG
    2024搜索客社区Meetup首期线上活动正式启动,本次活动由搜索客社区、极限科技(INFINILabs)联合举办,诚邀广大搜索技术开发者和爱好者参加交流学习。活动时间:2024年7月31日19:30-20:30(周三)活动形式:微信视频号(极限实验室)直播报名方式:关注或扫码海报中的二维码进行预约活......
  • 特征工程的自动化革新:Mojo模型中的动态应用策略
    特征工程的自动化革新:Mojo模型中的动态应用策略在机器学习领域,特征工程是提升模型性能的黄金钥匙。Mojo模型,作为一个代表任何机器学习模型的术语,其性能在很大程度上依赖于特征的有效性。随着数据的不断变化和业务需求的演进,自动化和动态应用特征工程变得尤为重要。本文将探......
  • 新版13国多语言交易所系统
    前后html,带文本搭建教程,测试下单、结算、k线都正常点我头像-个人简介-获取源码......
  • Codeforces 913 div3 A-G
    A题意分析把给定的坐标的那一行和那一列的其他所有坐标都输出来C++代码#include<iostream>usingnamespacestd;intmain(){ intt; cin>>t; while(t--){ strings; cin>>s; for(inti=1;i<=8;i++){ if(i+'0'!=s[1])cout<<s[0]<<i<<end......
  • 解密黑盒:Mojo模型中自定义模型解释性报告的动态生成
    解密黑盒:Mojo模型中自定义模型解释性报告的动态生成在机器学习领域,模型的可解释性是一个至关重要的议题。Mojo模型,作为一个通用术语,可以指代任何机器学习或深度学习模型。随着模型被集成到生产环境中,提供模型决策的透明度和可解释性变得尤为关键。本文将探讨如何在Mojo模型......
  • P3131 [USACO16JAN] Subsequences Summing to Sevens S
    传送锚点:[USACO16JAN]SubsequencesSummingtoSevensS-洛谷题目描述FarmerJohn's\(N\)cowsarestandinginarow,astheyhaveatendencytodofromtimetotime.EachcowislabeledwithadistinctintegerIDnumbersoFJcantellthemapart.FJwould......
  • VMware Fusion Pro 虚拟机 免费了附最新版 13.5.2-23775688 下载地址
    VMwareFusionPro可以帮助用户在Mac上安装Windows、Linux等多种操作系统,最重要的是无需重启电脑切换系统,可以和MacOS系统同时运行,就类似于MacOS安装了一个应用。对于家庭用户来说足够简单,对于IT专业人员,开发人员和企业来说足够强大。VMwareFusionPro是一款强大的......
  • 「杂题乱刷2」CF1513C
    duel到的。题目链接CF1513CAddOne(luogu)CF1513CAddOne(codeforces)解题思路我们发现,初始数列中的每个数字变为\(10\)必定只需要至多\(10\)次,于是我们可以直接预处理出\(10\)这个数字经过\(i\)次变化后能形成多少位的数字即可。状态为\(dp_{i,j}\)表示\(1......
  • 动态数据增强的艺术:Mojo模型的自定义应用
    动态数据增强的艺术:Mojo模型的自定义应用在机器学习和深度学习领域,数据增强是提升模型泛化能力的重要手段。Mojo模型,作为深度学习模型的一种封装形式,通常指的是通过训练得到的模型参数的集合,它能够被用于快速推理。但是,Mojo模型本身是否支持在推理阶段进行自定义的数据增强......
  • 使用Python实现深度学习模型:语言翻译与多语种处理
    引言语言翻译和多语种处理是自然语言处理(NLP)中的重要任务,广泛应用于跨语言交流、国际化应用和多语言内容管理等领域。通过使用Python和深度学习技术,我们可以构建一个简单的语言翻译与多语种处理系统。本文将介绍如何使用Python实现这些功能,并提供详细的代码示例。所需工具......