数据库的基本操作3-简单查询 | 学习笔记

简介: 快速学习数据库的基本操作3-简单查询

开发者学堂课程【Python Web 框架 Flask 快速入门数据库的基本操作3-简单查询】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/603/detail/8799


数据库的基本操作3-简单查询

目录:

一、查询操作基本概念

二、查询操作示例

一、查询操作基本概念

1.1常用的 SQLAlchemy  查询过滤器

filter()  把过滤器添加到原查询上,返回一个新查询

filter_by()  把等值过滤器添加到原查询上,返回一个新查询

limit  使用指定的值限定原查询返回的结果

offset()  偏移原查询返回的结果,返回一个新查询

order_by()  根据指定条件对原查询结果进行排序,返回一个新查询

group_by()  根据指定条件对原查询结果进行分组,返回一个新查询

1.2常用的  SQLAlchemy  查询执行器

all()  以列表形式返回查询的所有结果

first()  返回查询的第一个结果,如果未查到,返回  None

first_or_404()  返回查询的第一个结果,如果未查到,返回404

get()  返回指定主键对应的行,如不存在,返回  None

get_or_404()  返回指定主键对应的行,如不存在,返回404

count()  返回查询结果的数量

二、示例

2.1插入角色数据

ro1=Role(name='admin')

db.session.add(ro1)

db.session.commit()

#再次插入一条数据

ro2=Role(name='user')

db.session.add(ro2)

db.session.commit()

2.2次插入多条数据

us1=User(name='wang',email='wang@163.com',password='

123456',role_id=ro1.id)

us2=User(name='zhang',email='zhang@189.com',password=

'201512',role_id=ro2.id)

us3=User(name='chen',email='chen@126.com',password='

987654',role_id=ro2.id)

us4=User(name='zhou',email='

zhou@163.com',password='456789’,role_id=ro1.id)

us5=User(name='tang',email='

tang@itheima.com',password='158104’,role_id=ro2.id)

us6=User(name='wu',email='‘wu@gmail.com',password='

5623514',role_id=ro2.id)

us7=User(name='qian',email='qian@gmail.

com',password='1543567',role_id=ro1.id)

us8=User(name='liu',email='liu@itheima.com',password=

‘867322',role_id=ro1.id)

us9=User(name='li',email='li@163.com',password=

'4526342',role_id=ro2.id)

us10=User(name='sun',email=‘sun@163.com,

password='235523’,role_id=ro2.id)

db.session.add.all([us1,us2,us3,us4,us5,us6,us7,us8,

us9,us10])

db.session.commit()

在Flask_SQLalchemy_demo.py对话框建立数据表:

@app.route("/')

defindex():

return'Helloflask!,

if_name__==._main__':

#删除表

db.drop_all()

#创建表工

db.create_all()#后边录入上述2.1的角色数据

ro1=Role(name='admin')

db.session.add(ro1)

db.session.commit()

#再次插入一条数据

ro2=Role(name='user')

db.session.add(ro2)

db.session.commit()

#后边录入上述2.2的多条数据

us1=User(name='wang',email='wang@163.com',password=

'123456',role_id=ro1.id)

us2=User(name='zhang',email='zhang@189.

com',password='201512',role_id=ro2.id)

us3=User(name='chen',email='chen@126.com',password=

'987654',role_id=ro2.id)

us4=User(name='zhou',email='

zhou@163.com',password='456789’,role_id=ro1.id)

us5=User(name='tang',email='

tang@itheima.com',password='158104’,role_id=ro2.id)

us6=User(name='wu',email='‘wu@gmail.com',password=

'5623514',role_id=ro2.id)

us7=User(name='qian',email='qian@gmail.

com',password='1543567',role_id=ro1.id)

us8=User(name='liu',email='liu@itheima.com

',password=‘867322',role_id=ro1.id)

us9=User(name='li',email='li@163.com',password=

'4526342',role_id=ro2.id)

us10=User(name='sun',email=‘sun@163.com,

password='235523’,role_id=ro2.id)

db.session.add.all([us1,us2,us3,us4,us5,us6,us7,

us8,us9,us10])

db.session.commit()

app.run(debug=true)

数据表程序建好。在运行对话框里运行程序:

/Users/Andy/.virtualenvs/flask_py/bin/python2/Users/

Andy/Desktop/Codes/Flask.SQLalchemydemo/Flask.SQLalchemy.

demo.py

*Runningonhttp://127.0.0.1:5000/(PressCTRL+Ctoquit)

Restartingwithstat

*Debuggerisactive!

DebuggerPIN:143-294-403

在这一步,准备数据工作完成。

2.3查询演练

完成以下查询

(1).查询所有用户数据

(2).查询有多少个用户

(3).查询第1个用户

(4).查询  id  为4的用户[3种方式]

演练操作

(1).查询所有用户数据。(该查询没有过滤器,直接用执行器all()

查询

#all()  返回查询到的所有对象

User.query.all()

演示:在  Terminal  运行对话框:输入  ipython  回车。

输入执行器条件:

In[1]:fromFlask_SQLalchemy_demoimport*

In[2]:User.query.a1l()

通过以上执行,第一个查询条件完成。

(2).查询有多少个用户(查询个数,用执行器  count()  查询)

User.query.count()

接(1)演示,继续输入:In[3]:User.query.count()

回车结果:

即有10个用户。

(3).查询第1个用户(查询第一个用户结果,用执行器  first()  查

询)

User.query.first()

接(2)演示,继续输入:In[4]:User.query.count()

回车结果。

结果对应数据表  Us1  的邮箱数据。

(4)、查询  id  为4的用户[3种方式]

#filter_by   直接用属性名,比较用=。filter  用类名。属性名,

比较用==

#filter_by  用于查询简单的列名,不支持比较运算符

#filter  比  filter_by  的功能更强大,支持比较运算符,支持

or 、in  等语法。

方式①:User.query.get(4)

方式②:User.query.filter_by(id=4).first()#属性=

方式③:User.query.filter(User.id==4).first()#对象

名,属性==

方式④:User.query.filter._by(id=4).first()#属性=

接(3)演示,继续输入上几种方式,回车结果。

这就是三种不同方式查询id为4的用户数据。

这里可以发现,filter  和  filter_by  的使用很相似,但有区别,

如下:

filter_by:属性=

filter:对象.属性=

filter  功能更强大,可以实现更多的一些查询,支持比较运算

相关文章
|
20天前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
20天前
|
前端开发 应用服务中间件 API
|
7天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
49 5
|
8天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
29天前
|
存储 关系型数据库 MySQL
如何优化数据库查询?
如何优化数据库查询?
65 1
|
21天前
|
SQL 存储 数据库
MSSQL遍历数据库根据列值查询数据
【9月更文挑战第12天】在 SQL Server 中,可以通过游标或临时表遍历数据库并根据列值查询数据。示例展示了如何创建临时表存储数据库名,并通过循环遍历这些名称来执行特定查询。需替换 `YourTableName`、`YourColumnName` 和 `YourValue` 为实际值。此方法要求有足够权限访问各数据库。若无跨库权限,需分别执行查询。
|
2月前
|
SQL 数据库 Java
HQL vs SQL:谁将统治数据库查询的未来?揭秘Hibernate的神秘力量!
【8月更文挑战第31天】Hibernate查询语言(HQL)是一种面向对象的查询语言,它模仿了SQL的语法,但操作对象为持久化类及其属性,而非数据库表和列。HQL具有类型安全、易于维护等优点,支持面向对象的高级特性,内置大量函数,可灵活处理查询结果。下面通过示例对比HQL与SQL,展示HQL在实际应用中的优势。例如,HQL查询“从员工表中筛选年龄大于30岁的员工”只需简单地表示为 `FROM Employee e WHERE e.age > 30`,而在SQL中则需明确指定表名和列名。此外,HQL在处理关联查询时也更为直观易懂。然而,对于某些复杂的数据库操作,SQL仍有其独特优势。
39 0
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
65 0
|
2月前
|
Java UED 开发者
当错误遇上Struts 2:一场优雅的异常处理盛宴,如何让错误信息成为用户体验的救星?
【8月更文挑战第31天】在Web应用开发中,异常处理对确保用户体验和系统稳定性至关重要。Struts 2 提供了完善的异常处理机制,包括 `exception` 拦截器、`ActionSupport` 类以及 OGNL 表达式,帮助开发者优雅地捕获和展示错误信息。本文详细介绍了 Struts 2 的异常处理策略,涵盖拦截器配置、错误信息展示及自定义全局异常处理器的实现方法,使应用程序更加健壮和用户友好。
36 0
|
2月前
|
Java XML Maven
跨越时代的飞跃:Struts 2 升级秘籍——从旧版本无缝迁移到最新版,焕发应用新生!
【8月更文挑战第31天】随着软件技术的发展,Struts 2 框架也在不断更新。本文通过具体案例指导开发者如何从旧版平滑升级到 Struts 2.6.x。首先更新 `pom.xml` 中的依赖版本,并执行 `mvn clean install`。接着检查 `struts.xml` 配置,确保符合新版本要求,调整包扫描器等设置。审查 Action 类及其注解,检查配置文件中的弃用项及插件。更新自定义拦截器实现,并验证日志配置。最后,通过一系列测试确保升级后的系统正常运行。通过这些步骤,可以顺利完成 Struts 2 的版本升级,提升应用的安全性和性能。
94 0
下一篇
无影云桌面