sqlalchemy 外键
时间:2019-10-02
本文章向大家介绍sqlalchemy 外键,主要包括sqlalchemy 外键使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、表
from sqlalchemy.orm import relationship from sqlalchemy import Column from sqlalchemy import Integer,String,ForeignKey class Depart(Base): __tablename__ = 'depart' id = Column(Integer, primary_key=True) title = Column(String(32), index=True, nullable=False) class Users(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(32), index=True, nullable=False) depart_id = Column(Integer,ForeignKey("depart.id")) # dp 创建联系,不创建字段 dp = relationship("Depart", backref='pers')
二、数据操作
# 1. 查询所有用户+所属部门名称 ret = session.query(Users.id,Users.name,Depart.title).join(Depart,Users.depart_id == Depart.id).all() for row in ret: print(row.id,row.name,row.title) # left join, sql语句 query = session.query(Users.id,Users.name,Depart.title).join(Depart,Users.depart_id == Depart.id,isouter=True) print(query) # 2. relation字段:查询所有用户+所属部门名称 ====> 正向查询 推荐 ret = session.query(Users).all() for row in ret: print(row.id,row.name,row.depart_id,row.dp.title) # 3. relation字段:查询销售部所有的人员 =======> 反向查询 推荐 obj = session.query(Depart).filter(Depart.title == '销售').first() for row in obj.pers: print(row.id,row.name,obj.title) # 4. 创建一个名称叫:IT部门,再在该部门中添加一个员工:a # 方式一: d1 = Depart(title='IT') session.add(d1) session.commit() # u1 = Users(name='a',depart_id=d1.id) session.add(u1) session.commit() # 方式二:使用relation u1 = Users(name='a',dp=Depart(title='IT')) session.add(u1) session.commit() # 5. 创建一个名称叫:保洁的部门,再在该部门中添加多个员工:a/b/c d1 = Depart(title='保洁') d1.pers = [Users(name='a'),Users(name='b'),Users(name='c'),] session.add(d1) session.commit()
原文地址:https://www.cnblogs.com/wt7018/p/11617825.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flink实战-定时器实现已完成订单自动五星好评
- 树状数组-HDU3015 Disharmony Trees
- 放弃fastjson,拥抱Jackson
- Spring入门
- 贪心-HDU1789 Doing Homework again(活动安排问题)
- flink实战-实时计算平台通过api停止流任务
- JAVA初级岗面试知识点——基础篇
- flink实战-flink streaming sql 初体验
- flink实战教程-使用set实时计算当天网站uv
- 贪心-HDU3348 coins(钱币问题)
- 归并排序详解 -HDU4911 Inversion(逆序对)
- 数据结构与算法——稀疏数组
- Maven安装配置详细教程
- 数据结构与算法——冒泡排序
- MyBatis Generator逆向工程-你还在手写mapper吗?