用session做数据的增删改查操作:

1、创建模型类,生成数据表

#第一步:创建基类
Base=declarative_base(engine)#第二步:定义python类和表的映射
class Person(Base):__tablename__='t_person'  #创建表名,最好是t_开头id=Column(name='id',type_=Integer,primary_key=True,autoincrement=True)name=Column(name='name',type_=String(255))age=Column(name='age',type_=Integer)address=Column(name='address',type_=String(255))country=Column(name='country',type_=String(50))  #创建表之后新加的字段city=Column(name='city',type_=String(50))        #创建表之后新加的字段def __str__(self):return '姓名:{}-年领:{}-地址:{}-国家:{}-城市:{}'.format(self.name,self.age,self.address,self.country,self.city)#第三步:模型类创建表
#Base.metadata.drop_all()
Base.metadata.create_all()

2、 构建session对象:

所有和数据库的ORM操作都必须通过一个叫做session的会话对象来实现
通过以下代码来获取会话对象:

from sqlalchemy.orm import sessionmaker
engine = create_engine(DB_URI)
Base = declarative_base(engine)
session = sessionmaker(engine)() # 注意,返回的是一个函数

特别注意1:session = sessionmaker(engine)() 返回的是一个函数

3、增加数据(C)

增加一条数据

#创建对象,也即创建一条数据:
p1=Person(name='zz',age=20,address='丰台区',country='中国',city='北京')
# 将这个对象添加到`session`会话对象中:
session.add(p1)
# 将session中的对象做commit操作(提交)
session.commit()

一次性增加多条数据

#添加数据到数据库
p1=Person(name='django',age=17,address='丰台区',country='中国',city='北京')
p2=Person(name='kb',age=21,address='大兴区',country='中国',city='北京')
p3=Person(name='python',age=18,address='昌平区',country='中国',city='北京')
p4=Person(name='flask',age=25,address='海淀区',country='中国',city='北京')
session.add_all([p1,p2,p3,p4])
session.commit()

4、查找数据

1、查找模型对应的表中所有的数据

all_person=session.query(Person).all()
for person in all_person:print(person)
姓名:zz-年领:20-地址:丰台区-国家:中国-城市:北京
姓名:django-年领:17-地址:丰台区-国家:中国-城市:北京
姓名:kb-年领:21-地址:大兴区-国家:中国-城市:北京
姓名:python-年领:18-地址:昌平区-国家:中国-城市:北京
姓名:flask-年领:25-地址:海淀区-国家:中国-城市:北京

2、使用first方法获取结果集中的第一条数据

p1=session.query(Person).first()
print(p1)
姓名:zz-年领:20-地址:丰台区-国家:中国-城市:北京

3、使用filter来做条件查询
例如:查询年领在20岁以上的人物信息

p2=session.query(Person).filter(Person.age>20)
print(p2)

打印结果:是一条sql语句

SELECT t_person.id AS t_person_id, t_person.name AS t_person_name, t_person.age AS t_person_age, t_person.address AS t_person_address, t_person.country AS t_person_country, t_person.city AS t_person_city
FROM t_person
WHERE t_person.age > %(age_1)s

注意2:只有加上first,all函数才会返回具体的数据,不然只打印出sql语句

p3=session.query(Person).filter(Person.age>20).all()
for p in p3:print(p)
姓名:kb-年领:21-地址:大兴区-国家:中国-城市:北京
姓名:flask-年领:25-地址:海淀区-国家:中国-城市:北京

4、使用filter_by来做条件查询

p4=session.query(Person).filter_by(age=20).all()
for p in p4:print(p)
姓名:zz-年领:20-地址:丰台区-国家:中国-城市:北京

五、filter过滤条件:

过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter方法实现的:
特别注意3:filter:用模型类名.属性名=='属性值’的方式过滤查询

1.equals :

查询名字叫python的人物信息

p5=session.query(Person).filter(Person.name=='python').all()
print(p5)

2.not equals : !

查询名字不叫flask的人物信息

p6=session.query(Person).filter(Person.name!='flask').all()
print(p6)

3.like & ilike [不区分大小写]:

查询名字包含an的人物信息

p7=session.query(Person).filter(Person.name.like('%an%')).all()
print(p7)

4. in_:

查询地区为海淀区和昌平区下的人物信息

p8=session.query(Person).filter(Person.address.in_(['昌平区','海淀区'])).all()
print(p8)

5. not in:

查询地区不是海淀区和昌平区下的任务信息

p9=session.query(Person).filter(~Person.address.in_(['昌平区','海淀区'])).all()
print(p9)

6. is null:

查询年领为None的人物信息

p10=session.query(Person).filter(Person.age==None).all()
print(p10)
或者
p11=session.query(Person).filter(Person.age.is_(None)).all()
print(p11)

7. is not null:

查询年领不为None的人物信息

p12=session.query(Person).filter(Person.age!=None).all()
print(p12)
p13=session.query(Person).filter(Person.age.isnot(None)).all()
print(p13)

8. and_:

查询姓名是python,并且年领为20岁的人物信息

p14=session.query(Person).filter(Person.name=='python',Person.age=='20').all()
print(p14)
或者
p15 = session.query(Person).filter(and_(Person.name == 'python', Person.age == '20')).all()
print(p15)
或者
p16= session.query(Person).filter(Person.name == 'python').filter(Person.age=='20').all()
print(p16)

9. or_:

查询姓名是python,或者年领为18岁的人物信息

p17=session.query(Person).filter(or_(Person.name=='python',Person.age=='20')).all()
print(p17)

特别注意4:上面的and_、or_都需要导入

from sqlalchemy import and_,or_

【Flask】数据的CRUD之增加和查询操作相关推荐

  1. 【Flask】数据的CRUD之更新和删除操作

    前提:需要生成数据表 下面的第一步到第六步是生成数据表的操作步骤 第一步:数据库配置 # 数据库的配置变量 HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE ...

  2. HBase【付诸实践 01】hbase shell 常用命令详解(表操作+数据增删改查+2种查询操作)(hbase-2.4.5 单机版standalone模式)

    1.运行环境 HBase的安装文件为:hbase-2.4.5-bin.tar.gz 相关配置信息可以查看<HBase-2.4.5 单机版standalone模式安装配置> 其他环境如下: ...

  3. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  4. mybatisplus查询今天的数据_MybatisPlus(CRUD)

    插入功能 //测试插入@Testpublic void testInsert(){ User user = new User(); user.setName("ironman"); ...

  5. 31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行

    31Python MysSQL - mysql-connector驱动 使用pip命令安装mysql-connector: python -m pip install mysql-connector ...

  6. MySQL之某个表中有近千万数据且CRUD访问缓慢的优化处理

    一.前言 MySQL 数据库某张表近千万的数据,CRUD比较慢,如何优化? 说实话,这个数据量级, MySQL 单库单表支撑起来完全没有问题的,所以首先还是考虑数据库本身的优化. 从上图可以看到,数据 ...

  7. (Java数据库编程基础操作)Statement实现数据查询操作

    Statement实现数据查询操作 在整个数据库的开发过程之中数据的查询操作是最复杂的,因为查询会牵扯到各种复杂查询的管理,例如:多表查询.子查询.统计查询.集合操作等等,但是从现代的开发来讲,对于数 ...

  8. java代码对数据库数据的CRUD操作

    java代码对数据库数据的CRUD操作 前言 一.CRUD.JDBC是什么? 二.操作步骤 1.连接mqsql数据库.加载数据库驱动 2.对数据库中的表进行增.删.改.查 总结 前言 对于刚刚学习完J ...

  9. mysql某张表删除慢_Mysql某个表有近千万数据,CRUD比较慢,如何优化?

    我是[会点代码的大叔],每天为你分享程序员干货,关注并私信我数字"1",送你一份程序员大礼包. MySQL 数据库某张表近千万的数据,CRUD比较慢,如何优化? 说实话,这个数据量 ...

最新文章

  1. MyBatis开发步骤
  2. 方法级权限控制-@Secured注解使用
  3. Java:放心(或非常容易)
  4. 关于数据库事务启用后的查询操作
  5. 计算机组成原理综合题,2013计算机组成原理复习题.doc
  6. Android ContentProvider 使用介绍
  7. OpenCV精进之路(十四):图像矫正技术深入探讨
  8. spring之ControllerAdvice注解
  9. 【Git/Github学习笔记】Git常用命令(代码冲突)
  10. 元胞自动机模型01——认识元细胞机模型
  11. Simulink中步长、powergui采样时间、模块采样时间、控制周期的关系
  12. HTTP的SSL 证书安装
  13. 7-3 计算平均成绩 (15分)
  14. STC12C5A60S2串口通信(使用独立波特率发生器)
  15. Ubuntu 12.04系统天嵌Linux交叉编译开发工具的安装
  16. 一键获取前程无忧招聘信息,并存储到excel中,全程只需要输入职位名称(51job 你要的自动化 这里全都有~~~)
  17. 北京市2009年住房建设计划
  18. 一位算法工程师对自己工作的反思,写的不错。
  19. 视频监控发展的技术难点在哪里?
  20. Android 天气APP(五)天气预报、生活指数的数据请求与渲染

热门文章

  1. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件
  2. 全国首个海底数据中心落地三亚,拉开海洋新基建赋能低碳算力序幕
  3. 数据机房局部过热与节能降耗解决方案
  4. 第一部分:数据中心专业名词你知道多少?
  5. Py之tornado:tornado库的简介、安装、使用方法之详细攻略
  6. 成功解决ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。backend_agg.cp36
  7. ML之Hash_EditDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用编辑距离算法进行判别
  8. Matlab:成功解决Expression or statements is incorrect--possibly unbalanced (,{,[.
  9. Py之chatterbot-corpus:python包之chatterbot-corpus包简介、安装、使用方法之详细攻略
  10. TF之DeepDream:DeepDream前世今生之简介、安装、使用方法之详细攻略