SQLAlchemy教程-第二章-SQL常用查询的ORM写法

今天是2018-07-02.

今天来写一些常用的SQL查询的ORM写法.

  1. 先把Emp, 也就是员工表的模型补上.
class Emp(Base):
    __tablename__ = ‘emp‘
    empno = Column(Integer, primary_key=True)
    ename = Column(String(10))
    job = Column(String(9))
    mgr = Column(Integer)
    hiredate = Column(Date)
    comm = Column(DECIMAL(7, 2))
    deptno = Column(Integer, ForeignKey(‘dept.deptno‘))

    def __repr__(self):  # 定义这个方法是为了方便打印到控制台查看.
        return str({
            ‘empno‘: self.empno,
            ‘ename‘: self.ename,
            ‘job‘: self.job,
            ‘deptno‘: self.deptno
        })
  1. 接下来, 我们进行一些基本的查询.
from models import *

def query_emp():
    emp1 = sess.query(Emp).first()
    print(emp1)

# 查询名字叫Smith的员工
def query_emp_with_filter():
    emp1 = sess.query(Emp).filter(Emp.ename == ‘Smith‘).first()
    print(emp1)

# 查询名字叫Smith, 职务为CLERK的一个员工
def query_emp_with_filters():
    emp1 = sess.query(Emp).filter(Emp.ename == ‘Smith‘, Emp.job == ‘CLERK‘).first()
    print(emp1)

# 查询职务为CLERK的全部员工
def query_emp_all_clerks():
    emp_clerks = sess.query(Emp).filter(Emp.job == ‘CLERK‘).all()
    for clerk in emp_clerks:
        print(clerk)

# 查询员工的名字和工号, 并按入职日期排序
def query_emp_empno_ename_order_by_hiredate():
    emps = sess.query(Emp.empno, Emp.ename, Emp.job, Emp.hiredate).order_by(Emp.hiredate.asc()).all()
    for item in emps:
        print(item.empno, item.ename, item.job, item.hiredate)

if __name__ == ‘__main__‘:
    query_emp_empno_ename_order_by_hiredate()

今天限于时间, 先这么多. 讲解比较粗劣, 各位同学有问题, 请留言.



SQLAlchemy官方网站

http://docs.sqlalchemy.org/en/latest/contents.html

教程全部代码github地址

https://github.com/notfresh/sqlalchemy_demo

原文地址:https://www.cnblogs.com/notfresh/p/9256350.html

时间: 2024-10-11 17:54:56

SQLAlchemy教程-第二章-SQL常用查询的ORM写法的相关文章

SQLAlchemy教程-第四章-SQL常用查询的ORM写法进阶2-待完善

内容预告 别名的用法 函数的用法 分组的写法. case when的用法. exists的用法 为啥要用别名? 如果两个表的两列名字相同, 那么为了区分这两列, 必须使用别名. 如果有一列是通过运算出来的, 那么一定要给这列起个名字, 否则无法在查询结果中引用. 看别名的写法. 先把代码贴上来, 然后注释我都在代码里写了, 请大家自行阅读~ (#^.^#) from models import * # 别名 def query_with_column_alias(): emps = sess.q

《Linux Shell脚本攻略》 笔记 第二章:常用命令

<Linux Shell脚本攻略> 笔记 第二章:常用命令 1.cat cat -s //多个空白行压缩成一个 cat *.txt | tr -s '\n'   //移除空白行 cat -n //加行号 2.find 沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作. eg: find ./ ! -name "*.txt" -print [[email protected] program_test]# find ./  -type f -name "

openwrt教程 第二章 下载openwrt源码

2.1 开发环境 我们工作室(F403科技创意室:http://f403tech.taobao.com/)写的该教程,所使用的环境为: VMware Workstation:VMware 8 Ubuntu:Ubuntu12.04 具体环境搭建过程,可以向客服索要用户手册!上面有非常详细的过程! 2.2 准备工作 再下载.配置.编译openwrt系统之前,我们需要做些准备工作,安装一些必须的工具.库. (1) 安装SVN工具 安装SVN工具,用于下载openwrt源码: $ sudo apt-ge

[Learn Android Studio 汉化教程]第二章:Android Studio概述(一)

[Learn Android Studio ]第二章:Android Studio概述(一) Android Studio是一个视窗化的开发环境.为了充分利用有限的屏幕空间,不让你束手束脚,Android Studio 在特定的时间仅仅显示一小部分可用窗口.除了一些上下文敏感的窗口和上下文相关的窗口显示出来外,其他的仍旧隐藏,除非你主动打开它们.或者相反,一些可见的窗口直到你主动隐藏它们.为了充分利用Android Studio,你就需要明白这些窗口的功能以及如何.何时去显示它们.在这一章,我们

Python算法教程第二章知识点:计时模块、字典与散哈希表、图与树的实现、成员查询、插入对象

本文目录:一.计时模块:二.字典与散哈希表:三.图与树的实现:四.成员查询:五.插入对象</br>一.计时模块(timeit.cProfile) import timeit timeit.timeit('x = 1 + 2') 既然学习算法,那么来计算程序所耗费的时间是重要的,但是需要注意:timeit()计时函数会多次运行相关的代码段并求得平均值,以提高计时的精准度,所以,我们需要预防早先的执行操作影响之后代码的执行.举个栗子:若我们执行排序算法,则只有第一次执行代码时是在随机的情况下计时,

python基础教程-第二章-列表和元组

本章将引入一个新的概念,:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在 一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号--即元素的位置,也称为索引.第一个索引是0,第二个则是1,依次类推. 2.1 序列概览 python包含6中内建的序列,本章重点讨论最常用的两种:列表和元组.其他的内建序列类型字符串.Unicode字符串.buffer对象和xrange对象

第二章 Qt常用工具的介绍

(1)No.1 qmake 相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型.功能.模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理文件.手写Makefile比较困难也容易出错.还没有编写过Makefile,甚至还不知道Makefile为何物的开发人员,也不用为此烦心,qmake可以方便地基于一个工程文件,生成不同平台下的Makefile.qmake关注编译器和处理器平台的依赖性,开发人员不用再手写针对不同编译器和不同处理器平台的Makefile,而可以花

Storm入门教程 第二章 构建Topology[转]

2.1 Storm基本概念 在运行一个Storm任务之前,需要了解一些概念: Topologies Streams Spouts Bolts Stream groupings Reliability Tasks Workers Configuration Storm集群和Hadoop集群表面上看很类似.但是Hadoop上运行的是MapReduce jobs,而在Storm上运行的是拓扑(topology),这两者之间是非常不一样的.一个关键的区别是: 一个MapReduce job最终会结束,

jquery基础教程 - 第二章 选择元素

内容提要 1.网页中元素的介绍 2.如何通过CSS选择符在页面中查找元素 3.扩展jquery标准的CSS选择符 4.让选择页面元素更灵活的DOM遍历方法 本章重点:让我们能够在DOM中快捷而又轻松地获取元素或元素的集合 1.网页中元素介绍 1.1理解DOM -- JQUERY最大的特性之一就是它能够简化在DOM中选择元素的任务, DOM 充当网页和javascript之间的接口,它以对象网络而非纯文本的形式来表现html的代码 <html>是网页中的祖先元素: 搞清楚子元素,父元素,同辈元素