Flask框架从入门到精通之模型创建与添加(十二)
知识点:
1、模型类创建
2、模型类关系
3、模型数据添加
一、概况
在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。会话用db.session表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用commit()方法提交会话。
数据库会话是为了保证数据的一致性,避免因部分更新导致数据不一致。提交操作把会话对象全部写入数据库,如果写入过程发生错误,整个会话都会失效。
数据库会话也可以回滚,通过db.session.rollback()方法,实现会话提交数据前的状态。
二、创建模型类
我们用王者荣耀类型和英雄中的关系来创建模型类。比如射手类型对应了很多英雄:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysqlpymysql.install_as_MySQLdb()
app = Flask(__name__)
# 设置连接数据库的URL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@127.0.0.1:3306/db_flask'# 设置每次请求结束后会自动提交数据库中的改动
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True# 数据库和模型类同步修改
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True# 查询时会显示原始SQL语句
app.config['SQLALCHEMY_ECHO'] = Truedb = SQLAlchemy(app)# 类型
class Type(db.Model):# 表名__tablename__ = 'tbl_types'# 数据库真正存在的字段id = db.Column(db.Integer, primary_key=True) # 主键name = db.Column(db.String(32), unique=True) # 名字# 数据库中不存在的字段,只是为了查找和反向查找。# backref:在关系的另一模型中添加反向引用heros = db.relationship("Hero", backref='type')# 英雄
class Hero(db.Model):# 表名__tablename__ = 'tbl_heros'# 数据库真正存在的字段id = db.Column(db.Integer, primary_key=True) # 主键name = db.Column(db.String(64), unique=True) # 名字gender = db.Column(db.String(64)) # 性别# 外键 一个射手对应很多英雄type_id = db.Column(db.Integer, db.ForeignKey("tbl_types.id"))
三、创建表和添加数据
上面我们已经提到在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。
if __name__ == '__main__':# 0.0.0.0代表任何能代表这台机器的地址都可以访问# app.run(host='0.0.0.0', port=5000) # 运行程序db.drop_all() # 清楚数据库所有数据 只试用第一次运行db.create_all() # 创建表type1 = Type(name='射手')db.session.add(type1) # 添加到会话db.session.commit() # 提交type2 = Type(name='坦克')db.session.add(type2)db.session.commit()type3 = Type(name='法师')type4 = Type(name='刺客')db.session.add_all([type3, type4]) # 添加多个db.session.commit()hero1 = Hero(name='后羿', gender='男', type_id=type1.id)hero2 = Hero(name='程咬金', gender='男', type_id=type2.id)hero3 = Hero(name='王昭君', gender='女', type_id=type3.id)hero4 = Hero(name='安琪拉', gender='女', type_id=type3.id)hero5 = Hero(name='兰陵王', gender='男', type_id=type4.id)db.session.add_all([hero1, hero2, hero3, hero4, hero5]) # 添加多个db.session.commit()
我们登入本地数据库查看一下:
查询英雄类型:
查询英雄:
Flask框架从入门到精通之模型创建与添加(十二)相关推荐
- Flask框架从入门到精通之参数配置(二)
知识点: 1.参数配置 一.概况 上一篇我们已经把Flask第一个程序运行起来了,那么这一篇主要讲一下Flask参数的配置. 二.配置参数 Flask参数配置方式有很多种,每一种都可以达到结果,在合适 ...
- Flask框架从入门到精通之转换器(四)
知识点: 1.转换器 2.自定义转换器 3.转化器高级用法 一.概况 有很多请求我们URL地址后面会跟着参数,并且后端要提取到参数,比如:http://127.0.0.1:5000/center/1这 ...
- Flask框架从入门到精通之路由(三)
知识点: 1.路由 2.重定向 3.请求方式 4.PostMan使用 一.概况 说到路由,其实就是我们在浏览器输入地址后,后台进行匹配,如果匹配上,则执行此视图函数并返回内容.我们经过前面的例子也看出 ...
- PyTorch系列入门到精通——模型创建与nn.Module
PyTorch系列入门到精通--模型创建与nn.Module
- python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...
SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...
- 【零基础入门前端系列】—背景属性(十二)
[零基础入门前端系列]-背景属性(十二) 一.背景属性 CSS背景属性主要有以下几个: CSS3中可以通过background-image属性添加背景图片. 不同的背景图像和图像用逗号隔开,所有的图片 ...
- Flask框架基础入门教程
文章目录 前言 Flask 基础概念和安装 Flask 快速入门小应用 Flask 之模板的使用 后续,待更新.... 前言 最近开始学习flask 框架,本文用于flask 框架的基础入门学习,版本 ...
- 后端开发——Flask框架从入门到入坟(终章)
前言 前面已经将Flask框架的内容基本梳理完了,在这篇文章中荔枝会将Flask的部署上云的步骤跟大家分享一下,其实也是基于宝塔页面来进行配置的啦哈哈哈.荔枝也会将环境配置命令和数据库迁移步骤分享出来 ...
- V-rep学习笔记:机器人模型创建2—添加关节
下面接着之前经过简化并调整好视觉效果的模型继续工作流,为了使模型能受控制运动起来必须在合适的位置上添加相应的运动副/关节.一般情况下我们可以查阅手册或根据设计图纸获得这些关节的准确位置和姿态,知道这些 ...
最新文章
- java.lang.IllegalArgumentException: No view found for id 0x7f07005f (xx) for for fragment xxFragment
- 25张图解Redis连环面试!击溃面试官!
- 《php入门很简单,PHP入门速成(1)
- ​你真正了解使用过的数据集吗?数据集有什么关系?数据集之间有多像?
- 用git提交代码到远程仓库遇到的问题
- 西门子45亿美元转型,“卖冰箱”到“卖VR”
- net如何在aspx页面中将html页面快速的加入runat,asp.net中在aspx.cs向aspx页面写代码有哪几种方法?...
- CRUD了3 年从8K涨到30K,谁知道这4个月我到底经历了什么?
- 【自编教材】16万8千字的HTML+CSS基础 适合从0到1-可收藏
- 计算机网络的定义及答案,计算机网络习题库
- 重大建设项目土地勘测定界涉及基本农田怎么计算
- win10如何删除微软拼音输入法
- 数据存储与容灾实验 用Winhex恢复磁盘
- 我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,
- 初学者吉他怎么选?适合男女生新手吉他入门品牌推荐!
- CAD图纸转换成高质量的PDF文件,两种方法一步搞定哦
- 8.7 Meta learning元学习全面理解、MAML、Reptile
- 陈欧体程序员版And各种版本
- 从草根到百万年薪程序员的十年风雨之路,醍醐灌顶!
- js 在页面打印九九乘法表
热门文章
- 9.#技术|adb命令卸载手机预装app 小米+vivo
- Linux系统中PCS命令的使用
- 免费米拓cms插件自动采集发布推送
- 天翼云对象存储android实现,中国电信天翼云推出对象存储OOS——可作静态网站,可绑独立域名 | 问剑杂谈...
- Badboy录制jmeter性能测试脚本
- stm32hal库使用RTC时PC13作为普通GPIO注意事项
- Chrome浏览器高效插件/外挂总结
- 大计基编程题(第十周)
- Vasya and Good Sequences (Codeforces Round #512) 后缀和
- c盘扩展(c盘扩展卷是灰色的)