sqlalchemy常用语法
一、新增数据
# 新增一条数据
user_obj = User(name="bigberg", passwd="twgdh123")
Session.add(user_obj)
Session.commit() # 新增多条数据
user_obj1 = User(name="bigberg", passwd="twgdh123")
user_obj2 = User(name="someone", passwd="twgdh123")
Session.add_all([user_obj1,user_obj2]) Session.commit()
二、查询数据
2.1普通查询
# filter_by获取的是对象列表
data = Session.query(User).filter_by(name='bigberg').all()
print(data)
print(data[0].id, data[0].name, data[0].passwd) #输出
[<__main__.User object at 0x0000029DC2D51160>]
1 bigberg twgdh123 # 不指定条件
data = Session.query(User).filter_by().all()
print(data)
print(data[0].id, data[0].name, data[0].passwd) # 输出
[<__main__.User object at 0x0000026C9D27F0F0>, <__main__.User object at 0x0000026C9D27F160>, <__main__.User object at 0x0000026C9D27F1D0>]
1 bigberg twgdh123
2.2 查询数据显性展示
在类中定义
class User(Base):
__tablename__ = "user" # 表名
id = Column(Integer, primary_key=True)
name = Column(String(32))
passwd = Column(String(64)) def __repr__(self):
return "id:%s name:%s password:%s" % (self.id, self.name, self.passwd)
data = Session.query(User).filter_by().all()
print(data)
print(data[0].id, data[0].name, data[0].passwd) #输出
[id:1 name:bigberg password:twgdh123, id:2 name:Jerry password:twgdh123, id:3 name:Jack password:twgdh123]
1 bigberg twgdh123
2.3 获取第一条数据
data = Session.query(User).filter_by().first()
print(data)
print(data.id, data.name, data.passwd) # 输出
id:1 name:bigberg password:twgdh123
1 bigberg twgdh123
2.4 获取所有数据
print(Session.query(User.id, User.name, User.passwd).all()) #输出
[(1, 'bigberg', 'twgdh123'), (2, 'Jerry', 'twgdh123'), (3, 'Jack', 'twgdh123')]
2.5 多条件查询
data = Session.query(User).filter(User.id > 2).filter(User.id < 7).all()
print(data) #输出
[id:3 name:Jack password:twgdh123]
2.6 模糊查询
data = Session.query(User).filter(User.name.like('J%')).all() #输出
[id:2 name:Jerry password:twgdh123, id:3 name:Jack password:twgdh123]
2.7 and / or
from sqlalchemy import and_, or_ data = Session.query(User).filter(and_(User.id > 2, User.name.like('J%'))).all()
print(data) #输出
[id:3 name:Jack password:twgdh123]
2.8 in_
data = Session.query(User).filter(User.id.in_([1,3])).all()
print(data) data = Session.query(User).filter(User.name.in_(['bigberg', 'Jack'])).all()
print(data)
2.9 排序
data = Session.query(User).order_by(User.name.desc()).all()
print(data)
三、修改数据
- 第一种赋值
# data = Session.query(User).filter(User.name=='Marry').first()
data = Session.query(User).filter_by(name='Marry').first()
data.name = 'Tom'
Session.commit()
- 第二种update
Session.query(User).filter_by(name='Tom').update({'name': 'Hary'})
Session.commit()
- 回滚
ession.query(User).filter_by(name='Hary').update({'name': 'John'})
print(Session.query(User).filter_by(name='John').all())
# 回滚
Session.rollback()
print(Session.query(User).filter_by(name='John').all())
Session.commit() #输出
[id:2 name:John password:twgdh123]
[] mysql> select * from user;
+----+---------+----------+
| id | name | passwd |
+----+---------+----------+
| 1 | bigberg | twgdh123 |
| 2 | Hary | twgdh123 |
| 3 | Jack | twgdh123 |
+----+---------+----------+
3 rows in set (0.00 sec) # Hary 确实没有改成 John
四、统计
data = Session.query(User).filter(User.name.like('%a%')).count()
print(data) #输出
2
五、分组
from sqlalchemy import func data = Session.query(User.name, func.count(User.name)).group_by(User.name).all()
print(data) # 输出
[('bigberg', 1), ('Hary', 1), ('Jack', 1)]
sqlalchemy常用语法的更多相关文章
- Markdown通用的常用语法说明
前言 Markdown 是一种轻量级的 标记语言,语法简洁明了.学习容易,还具有其他很多优点,目前被越来越多的人用来写作使用. Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表 ...
- Markdown简介以及常用语法
Markdown简介以及常用语法 最近发现用markdown记录东西很方便,感觉和emacs的org mode很类似,但是windows下使用emacs不是很方便.特此记录一下markdown常用的语 ...
- Sql常用语法以及名词解释
Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...
- Markdown常用语法
什么是Markdown Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. 通过Markdown简单的语法,就可以使普通文本内容具有 ...
- 2 hive的使用 + hive的常用语法
本博文的主要内容有: .hive的常用语法 .内部表 .外部表 .内部表,被drop掉,会发生什么? .外部表,被drop掉,会发生什么? .内部表和外部表的,保存的路径在哪? .用于创建一些临时表存 ...
- sql 常用语法汇总
Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...
- ES6常用语法
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
- python MVC、MTV 框架介绍 Django 模板系统常用语法
Django 框架简介一.MVC框架和MTV框架1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.优势: 耦合性低 重用性高 生命 ...
- PHP中Smarty引擎的常用语法
PHP中Smarty引擎的常用语法 输出今天的日期: {$smarty.now|date_format:"%H:%M %A, %B %e, %Y"} 实际上用到了PHP的time( ...
随机推荐
- YQCB冲刺周第七天
站立会议 任务看板 燃尽图 今天的任务为实现个人设置中的修改密码.设置金额的功能.以及界面的美化. 遇到的问题为修改自己密码时获得当前用户的id问题.
- 第二阶段Sprint冲刺会议10
进展:把所有功能整合到主界面,结果导致视频只能播放不能录制,闹钟加不进去,导致闹钟功能差点不能用,放弃整合.
- spring冲刺第五天
昨天进行了地图的初步编写,上网查找了错误的原因,改进了源代码,使程序可以执行. 今天继续编写地图代码,完善地图界面,使其变得美观. 遇到的问题:地图的完善比较难.
- Beta Scrum Day 2 — 听说
听说
- What is ASP.NET SignalR
什么是ASP.NET SignalR ASP.NET SignalR是ASP.NET开发人员的新库,它使得为应用程序添加实时Web功能变得非常简单. 什么是“实时网络”功能?它能够让您的服务器端代码实 ...
- angularJS中$apply()方法详解
这篇文章主要介绍了angularJS中$apply()方法详解,需要的朋友可以参考下 对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的 ...
- ASP.NET MVC 3.0 参考源码索引
http://www.projky.com/asp.netmvc/3.0/Microsoft/Internal/Web/Utils/CommonResources.cs.htmlhttp://www. ...
- 学习jenv
背景 生活不只是眼前的苟且, 还有诗和远方. 上个月工作需要启动了一个小项目, 按最初的计划会用JDK8. 但当计划报上去后, 运维部门出于后续升级维护的考虑, 不允许使用已经出来4年多的JDK8了, ...
- windows多线程(十) 生产者与消费者问题
一.概述 生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池 ...
- [转帖] Oracle 关闭自动收集统计信息
--关闭自动统计信息 https://blog.csdn.net/royzhang7/article/details/51172556 明天再仔细看一下. select client_name,sta ...