Flask博客实战 SQLAlchemy的增删改查

Flask博客实战 SQLAlchemy的增删改查

既然我们选择了使用ORM框架,那就必须熟练掌握其提供的增删改查方法,在正式编写视图事前,本节内容我们先在shell环境中来了解和熟悉其增删改查的基础方法!

插入记录

这里我们以博客的分类为案例进行演示

1、首先设置环境变量,进入shell环境

至于如何导出环境变量请参考《安装并配置Flask-SQLAlchemy》章节,最后同步数据字段相关内容!

2、运行如下命令进入shell环境

flask shell

3、导入模型数据

>>> from RealProject import db>>> from app.blog.models import Category, Post

插入一条分类记录

>>> cate = Category(name=’分类一’)>>> db.session.add(cate)>>> db.session.commit()>>> cate

以上就是插入向数据库插入一条记录的基本思路:

  • 1、实例化模型的python对象
  • 2、将该实例化对象添加到回话 db.session.add(cate)
  • 3、提交该会话 db.session.commit()

查询记录

在查询之前我们先多添加几条分类数据的记录

  • 拓展,批量插入数据的几种方法:http://www.lotdoc.cn/blog/detail/178/

>>> cates = [‘分类二’, ‘分类三’, ‘分类四’]>>> for name in cates:… cate = Category(name=name) … db.session.add(cate)… db.session.commit()…>>> Category.query.all()[, , , ]

查询最常用方法有:all()、first()、get()、filter()、order_by()

  • 按分类名称检索

>>> cate1 = Category.query.filter_by(name=’分类一’).first()>>> cate1.id1>>> cate1.name’分类一’

这里如果传入的分类名称不存在则返回None!

  • 通过更复杂的表达式查询多个分类:

>>> Category.query.filter(Category.name.endswith(‘分类’)).all()[]>>> Category.query.filter(Category.name.endswith(‘分类一’)).all() []>>> Category.query.filter(Category.name.endswith(‘2’)).all() []>>> Category.query.filter(Category.name.startswith(‘分’)).all() [, , , ]

模糊匹配某一个字段,endswith从字段的最后一个字符开始匹配,startswith从第一个字符开始匹配

  • 按某字段进行排序:

>>> Category.query.order_by(Category.add_date).all()[, , , ]>>> Category.query.order_by(-Category.add_date).all()[, , , ]

  • 限制查询数量

>>> Category.query.limit(1).all()[]>>> Category.query.limit(2).all() [, ]>>> Category.query.limit(3).all() [, , ]

  • 按住键查询

>>> Category.query.get(1)

更新方法

>>> cate_2 = Category.query.get(2)>>> cate_2.name = ‘分类二new’>>> db.session.commit()

删除记录

>>> cate = Category.query.get(1)>>> db.session.delete(cate)>>> db.session.commit()

常用的查询和过滤方法

过滤方法

说明

filter()

使用指定的规则过滤记录,返回新产生的查询对象

filter_by()

使用指定规则过滤记录(以关键字表达式的形式),返回新产生的查询对象

order_by()

根据指定条件对记录进行排序,返回新产生的查询对象

group_by()

根据指定条件对记录进行分组,返回新产生的查询对象

下面是一些常用的查询方法:

查询方法

说明

all()

返回包含所有查询记录的列表

first()

返回查询的第一条记录,如果未找到,则返回 None

get(id)

传入主键值作为参数,返回指定主键值的记录,如果未找到,则返回 None

count()

返回查询结果的数量

first_or_404()

返回查询的第一条记录,如果未找到,则返回 404 错误响应

get_or_404(id)

传入主键值作为参数,返回指定主键值得记录,如果未找到,则返回 404 错误响应

paginate()

返回一个 Pagination 对象,可以对记录进行分页处理

其他章节:

  • Flask博客开发实战 – 前言
  • Flask博客开发实战 – 配置环境并安装Flask
  • Flask博客实战 – 快速上手
  • Flask博客实战 – 目录结构
  • Flask博客实战 – 工厂函数
  • Flask博客实战 – 蓝图应用
  • Flask博客实战 – Flask-SQLAlchemy的使用
  • Flask博客实战 – 配置Flask-Migrate
  • Flask博客实战 – 博客相关模型创建
  • 郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
    (0)
    用户投稿
    上一篇 2022年6月16日
    下一篇 2022年6月16日

    相关推荐

    • 架构之美-服务端高并发分布式架构演进之路

      1、概述 本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架…

      2022年7月4日
    • 总结下SpringData JPA 的常用语法

      SpringData JPA常用有两种写法,一个是用Jpa自带方法进行CRUD,适合简单查询场景、例如查询全部数据、根据某个字段查询,根据某字段排序等等。另一种是使用注解方式,@Q…

      2022年6月18日
    • 《逆水寒》即将迎来画质升级 照片级截图放出

      6月28日消息,《逆水寒》官方于今日宣布,游戏即将迎来画质升级。 据官方介绍,在未来不久,《逆水寒》将与全球最顶级的硬件厂商一起推出全新渲染技术,会呼吸的江湖即将迎来全面画质升级。…

      2022年6月29日
    • 手机屏幕坏了自己能换吗(手机屏幕碎了3种维修方法)

      很多朋友在使用手机时,不小心将手机的屏幕摔碎了,更换一块完整的屏幕又太贵,想要修复又不知道哪种方法可以,本期文章就说说在不更换整个屏幕的情况下,如何修理手机的“碎屏”。 在说方法之…

      2022年5月4日
    • 芬兰热身赛3分险胜乌克兰 马尔卡宁22投11中砍下42分8板

      直播吧8月19日讯 在今天结束的一场热身赛中,芬兰男篮以97-94战胜了乌克兰男篮。 在这场比赛里,马尔卡宁不可阻挡,全场比赛他22投11中,罚球18罚16中得到了42分8篮板的数…

      2022年8月19日
    • 找准自己,改变命运

      当我们不能决定生活的长度时,就对生活宽度进行改变吧! 我们不要指望父母给我们提供良好的机会和平台,我们也不能埋怨没有好的境遇,因为毕竟地怨也于事无补。年轻人要学会审视自己现有的一切…

      2022年4月26日
    • 《原神》半永恒统辖矩阵隐身怎么解除 半永恒统辖矩阵隐身解除方法

      半永恒统辖矩阵是本次沙漠地图的全新BOSS,它有一个特殊的机制,隐身,一旦进入和这个状态玩家就无法攻击他,那么下面就由小编给大家带来半永恒统辖矩阵隐身解除方法,希望能给大家带来帮助…

      2022年10月9日
    • 2022年大数据视角下中国新能源汽车消费洞察报告,完整版27页

      本文报告来源于汽车之家研究院编写的《2022年中国电力确定性网络应用白皮书》报告,完整版共有27页,非常详尽,值得收藏。 本报告下载领取方式详见文末 本报告目录大纲如下: 市场景气…

      2022年6月17日
    • 面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

      不知不觉,面渣逆袭系列已经肝了差不多十篇,每一篇都是上万字,几十图,基本上涵盖了面试的主要知识点,这期MySQL结束之后,这个系列可能会暂时告一段落,作为面渣逆袭系列第一阶段的收官…

      2022年6月23日
    • 钱江摩托最新股东户数下降8.67% 筹码趋向集中

      钱江摩托8月11日在交易所互动平台中披露,截至8月10日公司股东户数为16307户,较上期(7月31日)减少1549户,环比降幅为8.67%。这已是该公司股东户数连续第2期下降。 …

      2022年8月12日

    联系我们

    联系邮箱:admin#wlmqw.com
    工作时间:周一至周五,10:30-18:30,节假日休息