外键以及relationship

首先创建模型类,根据模型类创建数据库,在这里一个user对应多个email_address,因此需要在address上增加一个user_id这个外键(一对多关系)

class User(Base):__tablename__='t_user'id = Column(Integer, primary_key=True)name = Column(String(32))address=relationship('Address',backup=backup('user'),order_by="Address.id")def __repr__(self):return f'{self.id}{self.name}'class Address(Base):__tablename__='t_address'id = Column(Integer, primary_key=True)email_address = Column(String(32), nullable=False)#外键字段user_id=Column(Integer,ForeignKey('user.id')) def __repr__(self):return f'{self.id}{self.email_address}'Base.metadata.create_all()
#Base.metadata.drop_all()

插入数据:

def save():#插入User表数据res=User(name='kobe3')session.add(res)session.commit()#插入Address表数据res1=Address(email_address='北京',user_id=1)res2=Address(email_address='北京',user_id=2)res3=Address(email_address='济南',user_id=3)res4=Address(email_address='长沙',user_id=4)session.add_all([res1,res2,res3,res4])session.commit()

查询数据:

使用join方法:查询用户id为4的姓名和地址(不在一张表),需要关联起来

res=session.query(User).join(Address).filter(User.id==Address.user_id).filter(User.id==4).first()
print(res)

不使用join方法:

res=session.query(User.name,Address.email_address).filter(User.id==Address.user_id).first().name
print(res)

当不存在外键时,使用下面的方法进行读取数据

res2=session.query.join(Address,User.id==Address.user_id).filter(Address.user_id==1).first()
print(res2)

子查询

查询地址和id=1相同的人物信息

res3=session.query(Address.email_address.label('city')).filter(Address.id==1).subquery()
print(res3)
res4=session.query(Address).filter(Address.email_address==res3.c.city).all()
print(res4)

统计每个用户的email地址的数量,

联接子句,注意子句中需要使用c来调用字段内容

先写子查询

res6=session.query(Address.user_id,func.count('*').label('address_count')).group_by(Address.user_id).subquery()

再写父查询

res7=session.query(User.name,res6.c.address_count).outerjoin(res6,User.id==res6.c.user_id).all()
print(res7)

包含contains

res5=session.query(Address).filter(Address.email_address.contains('长')).all()
print(res5)

【Flask】sqlalchemy高级用法(注意join的用法)相关推荐

  1. php中join用法,PHP join()函数用法与实例讲解

    PHP join() 函数 实例 把数组元素组合为一个字符串: $arr = array('Hello','World!','Beautiful','Day!'); echo join(" ...

  2. python threading join_Python中threading模块join函数用法实例分析

    本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后joi ...

  3. full join 和full outer join_带你了解数据库中JOIN的用法

    前言 欢迎关注公众号:Coder编程 获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识! 本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点.本次会介绍数据库 ...

  4. java join的用法

    join的用法,先看几个例子在说. 程序1: public class ThreadTest implements Runnable { public static int a = 0;  publi ...

  5. SQL Join 的用法 一

    在我叙述 JOIN 的用法前,我先引用数据库设计中最常见的范式资料. 第三范式( 3NF ):如果关系模式 R ( U , F )中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系 R 是属于 ...

  6. SQL语句中JOIN的用法

    记录:257 写SQL最高境界:SELECT * FROM 表名.当然这是一句自嘲.探究一下SQL语句中JOIN的用法,直到经历这个场景,变得想验证一下究竟. 一.场景 把关系型数据库A中表TEST_ ...

  7. join的常用用法(JOIN的用法)

    join的用法-join和joinin在用法上有什么区别 join 作"参加,加入"讲时,一般指参加某一组织.团体或某群人.如: join the Party/ army/leag ...

  8. mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例

    MySQL JOIN 语法概述 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据. JOIN 通常与 ON 关键字搭配使用,基本语法如下: ... FROM ...

  9. tp5讲一个值传到另外一个控制里_tp5.1 框架join方法用法实例分析

    本文实例讲述了tp5.1 框架join方法用法.分享给大家供大家参考,具体如下: JOIN方法用于根据两个或多个表中的列之间的关系,从这些表中查询数据.join通常有下面几种类型,不同类型的join操 ...

最新文章

  1. leetcode 141. 环形链表(快慢指针解法)
  2. 数据库原理----学习目标
  3. get_metrology_object_result_contour查询计量对象的结果轮廓
  4. 未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...
  5. 第一个正式的python版本_LeetCode | 0278. First Bad Version第一个错误的版本【Python】...
  6. 坚果手机产品经理朱海舟:售后服务和系统维护会正常继续
  7. Sql Server系列:排序函数
  8. 为啥学蛇和python10年后的变化
  9. paip.提升性能---jvm java 工具使用.
  10. 【洛谷P1314】聪明的质检员(二分+前缀和+差分)
  11. [内附完整源码和文档] 基于Java的高校科研管理系统
  12. BootDO框架的使用及介绍
  13. java提高_最有效提高Java的10个计划
  14. 一台计算机英语美式发音,美式英语发音课程(视频+文本) 第69期:Want和Won't的发音对比...
  15. LeetCode43------两数相乘
  16. 在vs2019上配置opencv,百分百成功
  17. JS 保留两位小数,不足用0补齐
  18. Xcode5 开发入门-环境及初体验
  19. 2008 3GSM大会,巨头公司的动作与印象
  20. python中的map:将一个列表作为定义域映射函数到对的值域中

热门文章

  1. 收藏/一文弄清楚强弱电机房位置大小及布置如何选择?
  2. 运维岗位技能风向标!
  3. oracle供需平衡,OracleR12_MRP_功能介绍_V2.ppt
  4. 成功解决pywintypes.error: (2, 'LoadLibraryEx', '系统找不到指定的文件。')
  5. Py库下载:Dos内一条命令快速全部下载(先列出要下载的库名称保存为txt文件)
  6. Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略
  7. Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略
  8. JAVA_OA(八):springMVC对JDBC的操作小项目b
  9. git的简单操作命令
  10. 领域驱动设计(2)怎么使用沟通