Flask博客实战 SQLAlchemy的增删改查

Flask博客实战 - 掌握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

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

查询记录

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

>>> 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.id
1
>>> 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 对象,可以对记录进行分页处理

其他章节:

  1. Flask博客开发实战 - 前言
  2. Flask博客开发实战 - 配置环境并安装Flask
  3. Flask博客实战 - 快速上手
  4. Flask博客实战 - 目录结构
  5. Flask博客实战 - 工厂函数
  6. Flask博客实战 - 蓝图应用
  7. Flask博客实战 - Flask-SQLAlchemy的使用
  8. Flask博客实战 - 配置Flask-Migrate
  9. Flask博客实战 - 博客相关模型创建
展开阅读全文

页面更新:2024-04-22

标签:实战   博客   表达式   字段   环境变量   模型   对象   环境   方法   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top