三、Flask模型基础

ORM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建模型


# 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=app)
    migrate.init_app(app=app, db=db)
# __init__.py :初始化文件,创建Flask应用
from flask import Flask
from .views import blue
from .exts import init_exts
def create_app():
    app = Flask(__name__)
    # 注册蓝图
    app.register_blueprint(blueprint=blue)
    # 配置数据库
    db_uri = 'sqlite:///sqlite3.db'
    #   db_uri = 'mysql+pymysql://root:123456@localhost:3306/flaskdb'  # mysql的配置
    app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 禁止对象追踪修改
    # 初始化插件
    init_exts(app=app)
    return app
# models.py : 模型,数据库
from .exts import db

#  模型          数据库
#     类   ==> 表结构
#  类属性   ==>  表字段
# 一个对象  ==>  表的一行数据

# 模型Model:类
#  必须继承 db.Model
class User(db.Model):
    # 表名
    __tablename__ = 'tb_user'
    # 定义表字段
    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)
    salary2 = db.Column(db.Float, default=100000, nullable=False)


# db.Column : 表示字段
# db.Integer:表示整数
# primary_key=True : 主键
# autoincrement=True : 自动递增
# db.String(30): varchar(30) 可变字符串
# unique=True : 唯一约束
# index=True : 普通索引
# default=1 : 默认值
# nullable=False : 是否允许为空

数据迁移

在这里插入图片描述

模型操作

字段类型与约束

在这里插入图片描述
在这里插入图片描述

单表增删改查操作

# model.py
from .exts import db
# 类 => 表
# 类属性 => 表字段
# 对象 => 表的一条数据
class User(db.Model):
    __tablename__ = 'user'  # 表名
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), unique=True)
    age = db.Column(db.Integer, default=1)

    def __repr__(self):
        return self.name
from flask import Blueprint, request, render_template
from sqlalchemy import desc, and_, not_

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/562472.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Bootstrap 4的企业项目体验服务网站模板

目录 一.前言 二.展示 三.下载链接 一.前言 网页包含以下内容: 页面基本信息:设置页面的字符集、兼容性、视口等元数据。 网站标题和描述:定义了网站的标题为"Benten",同时也设置了关键词和描述。 CSS样式表链接&a…

基于SpringBoot+Vue七匹狼商城系统的设计与实现

系统介绍 近年来随着社会科技的不断发展,人们的生活方方面面进入了信息化时代。计算机的普及,使得我们的生活更加丰富多彩,越来越多的人使用通过网络来购买各类的商品。早期商品的销售和购买都是通过实体店,这种购买方式需要耗费…

《苍穹外卖》Day03部分知识点记录

一、公共字段自动填充 业务表中的公共字段: 序号字段名含义数据类型操作类型1create_time创建时间datetimeinsert2create_user创建人idbigint3update_time修改时间datetimeinsert、update4update_user修改人idbigint 问题:代码冗余,不便于…

const成员函数 以及 取地址及const取地址操作符重载

目录 const成员函数 结论: 取地址及const取地址操作符重载 const成员函数 将const 修饰的 “ 成员函数 ” 称之为 const成员函数 , const 修饰类成员函数,实际修饰该成员函数的(*this) ,表明在该成员函数…

ROS2 王牌升级:Fast-DDS 性能直接碾压 zeroMQ 「下」

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/aU1l3HV3a9YnwNtC1mTiOA 性能比较 下面就以官网的测试数据为准,让我们一起来看看它们的性能差别到底怎样。 本次比较仅针对 Fast RT…

AI安全之问:我们的智能助手真的安全吗?

在我们日益依赖人工智能来撰写文档、编写程序代码、甚至创作艺术作品的今天,我们是否曾经想过这些智能系统可能面临的被恶意操纵的风险? 分享几个网站 GPT-3.5研究测试: https://hujiaoai.cn GPT-4研究测试: https://higpt4.cn…

2024数学建模时间汇总与竞赛攻略

目录 2024数学建模汇总(时间、报名费、获奖率、竞赛级别、是否可跨校) 中国高校大数据挑战赛 “华数杯”国际大学生数学建模竞赛 美国大学生数学建模竞赛(美赛) 数学中国(认证杯)数学建模网络挑战赛 …

Python基础04-操作系统中的文件与目录操作

在与操作系统交互时,我们经常需要执行文件和目录的操作。Python提供了丰富的库来帮助我们完成这些任务。以下是一些常见的操作,以及如何使用Python代码来实现它们。 1. 导航文件路径 在不同的操作系统中,文件路径的格式可能不同。Python的o…

OpenUI在windows下部署使用

OpenUI OpenUI是一个基于Python的AI对话平台,支持接入多种AI模型。 通过聊天的方式来进行UI设计,你可以通过文字来描述你想要的UI界面,OpenUI可以帮你实时进行渲染出效果 安装OpenUI 这里预设你的电脑上已安装git、Python和pip&#xff0…

2023年美国西岸行 - Day 1

本来旅行回来就像记录的,结果一拖就是快1年。当然中间原先记录的博客平台关闭也有部分原因,但不是主要原因。趁着今天复活20年前的CSDN博客,赶紧记录一下。 疫情之后第一次全家长途旅行。这次美国之行,在3-4月份订机票的时候跟临…

Pages by User Role for WordPress:强化内容访问控制的必备插件

在数字化时代,WordPress已成为众多网站开发者和设计师的首选平台。然而,如何根据用户角色精确控制内容的访问权限,一直是困扰他们的难题。Pages by User Role for WordPress插件应运而生,为这一难题提供了完美的解决方案。 Pages …

Python高效的符号计算库之aesara使用详解

概要 Aesara是一个高效的符号计算库,用于深度学习和数值计算,它允许开发者以数学表达式的形式定义函数,并自动转换成高效的代码执行。Aesara不仅提高了计算效率,还简化了梯度计算过程,是深度学习研究和实验的强大工具。 安装 通过pip可以轻松安装Aesara: pip install…

【JavaWeb】Day51.Mybatis动态SQL

什么是动态SQL 在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中,我们会看到,我们将三个条件直接写死了。 如果页面只传递了参数姓名name 字…

网吧电脑可以用来渲染吗?渲染100邀请码1a12

对于设计行业的小伙伴来说,日常的渲染工作是个难题,电脑不行会导致很多问题,比如卡顿崩溃,甚至死机,这时候你可能想到去网吧渲染,毕竟网吧电脑看起来很强,那么真是这样的吗?这篇文章…

Android Studio实现页面跳转

建立文件 temp.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"…

MySql对于时间段交集的处理和通用实现方式(MyBatis-Plus)

问题&#xff1a;一般传统时间筛选是在[ 开始时间 → 结束时间 ]这个区间内的子集&#xff0c;也就是全包含查询方式&#xff0c;这种只会筛选一种情况。如果场景需要是开展一个活动&#xff0c;需要活动时间检索应该但凡包含就返回&#xff0c;也就是需要查询这个时间段有涉及…

大sql mysql执行

先把sql 拆分 太大的执行失败 使用 SQLDumpSplitter3 拆分sql 执行拆分的sql 拆分的sql 打开发现很多 ; 开头的空行 替换掉 正则 ^; 修改数据库 my.cnf my,ini 执行可能会提示 [ERR] 2006 - Server has gone away 错误 在 [mysqld] 添加以下几行 wait_timeout2880000 inter…

【机器学习】《ChatGPT速通手册》笔记

文章目录 第0章 前言第1章 ChatGPT的由来&#xff08;一&#xff09;自然语言处理任务&#xff08;二&#xff09;ChatGPT所用数据数据大小&#xff08;三&#xff09;ChatGPT的神经网络模型有175亿个参数&#xff08;四&#xff09;模型压缩 方案 第2章 ChatGPT页面功能介绍&a…

Flutter MQTT通信(实现聊天功能)

MQTT协议简介&#xff1a; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、开放的、基于发布/订阅模式的消息传输协议&#xff0c;最初由IBM开发。它专门设计用于在低带宽、不稳定的网络环境下进行高效的消息传输。 学习完本篇文章&#x…

探索通过GPT和云平台搭建网安实战培训环境

项目背景 网络安全是一个不断演变的领域&#xff0c;面临着日益复杂的挑战和不断扩大的威胁。数字化时代&#xff0c;随着勒索攻击、数据窃取、网络钓鱼等频频出现&#xff0c;网络攻击的威胁指数和影响范围进一步增加&#xff0c;如何防范网络攻击&#xff0c;确保数据安全&a…