sqlalchemy操作
Sqlalchemy ORM操作归类
#简单查询
#注意User是一个类对象,user_table是数据库中的表
#session = sessionmaker() #创建了一个自己定义了的 Session类
1. session.query(User).all()
session.query(User).first()#
记录不存在时,first()
会返回 None
session.query(User).one()#用于获取全部元素,假设没有获得结果或者返回了多个结果,则会产生一个 error
session.query(User).count()#计数
session.query(User).scalar()#返回列表和标量
2. session.query(User).limit(2).all()#最多返回两条数据
session.query(User).offset(3).all()#从第4条数据開始
session.query(User).order_by(User.name).all()#排序
session.query(User).order_by('name').all()
session.query(User).order_by(User.name.desc()).all()
session.query(User).order_by('name desc').all()
3. filter/ filter_by过滤
equals:
session.query(User).filter(User.name == 'ed')
not equals:
session.query(User).filter(User.name != 'ed')
LIKE:
session.query(User).filter(User.name.like('%ed%'))
IN:
session.query(User).filter(User.name.in_(['ed', 'wendy', 'jack']))
# 能够和 query 对象协同工作:
session.query(User).filter(User.name.in_(session.query(User.name).filter(User.name.like('%ed%'))))
NOT IN:
session.query(User).filter(~User.name.in_(['ed', 'wendy', 'jack']))
IS NULL:
session.query(User).filter(User.name == None)
IS NOT NULL:
filter(User.name != None)
AND:
from sqlalchemy import and_
session.query(User).filter(and_(User.name == 'ed', User.fullname =='Ed Jones'))
# 或者连续调用 filter()/filter_by()两次
session.query(User).filter(User.name == 'ed').filter(User.fullname== 'Ed Jones')
OR:
from sqlalchemy import or_
session.query(User).filter(or_(User.name == 'ed', User.name =='wendy'))
match:
session.query(User).filter(User.name.match('wendy'))
match 的參数内容由数据库后台指定。
4. 聚合查询
session.query(func.count('*')).select_from(User).scalar()
session.query(func.count('1')).select_from(User).scalar()
session.query(func.count(User.id)).scalar()
session.query(func.count('*')).filter(User.id> 0).scalar() # filter() 中包括 User,因此不须要指定表
session.query(func.count('*')).filter(User.name== 'a').limit(1).scalar() == 1 # 能够用 limit() 限制 count() 的返回数
session.query(func.sum(User.id)).scalar()
session.query(func.now()).scalar()# func 后能够跟随意函数名,仅仅要该数据库支持
session.query(func.current_timestamp()).scalar()
session.query(func.md5(User.name)).filter(User.id== 1).scalar()
5. 很多其它查询操作
#多条件查询
print(session.query(User).filter(and_(User.name.like("user),User.fullname.like("first%"))).all()
---相当于SQL语句--->
select * from user_table where user_table.name like %user anduser_table.fullname like first%
print(session.query(User).filter(or_(User.name.like("user%),User.password!= None)).all()
---相当于SQL语句--->
select * from user_table where user_table.name = user% oruser_table.password != none
#sql过滤
print(session(User).filter("id>:id").params(id=1).all()
---相当于SQL语句--->
select * from user_table where user_table.id > 1
#关联查询
print(session.query(User,Address).filter(User.id ==Address.user_id).all()
---相当于SQL语句--->
select * from user_table,address_table where user_table.id ==address.user_id
print (session.query(User).jion(User.address).all()
---相当于SQL语句--->
********************
print (session.query(User).outerjoin(User.address).all())
*******************
#子查询
stmt = session.query(Address.user_id,func.count('*').label("address_count").groupby(Address.user_id).subquery()
print(session.query(User,stmt.c.address_count).outjion((stmt,User.id ==stmt.c.user_id.order_by(User_id).all()
#exits
print (session.query(User).filter(exists().where(Address.user_id ==User.id)))
print (session.query(User).filter(User.addresses.any()))
其它《增删改》
query.filter(User.id == 1).update({User.name: 'c'})
user = query.get(1)
print user.name
user.name = 'd'
session.flush() # 写数据库,但并不提交
print query.get(1).name
session.delete(user)
session.flush()
print query.get(1)
session.rollback()
print query.get(1).name
query.filter(User.id == 1).delete()
session.commit()
print query.get(1)
sqlalchemy操作的更多相关文章
- flask 操作mysql的两种方式-sqlalchemy操作
flask 操作mysql的两种方式-sqlalchemy操作 二.ORM sqlalchemy操作 #coding=utf-8 # model.py from app import db class ...
- Python3.x:SQLAlchemy操作数据库
Python3.x:SQLAlchemy操作数据库 前言 SQLAlchemy是一个ORM框架(Object Rational Mapping,对象关系映射),它可以帮助我们更加优雅.更加高效的实现数 ...
- Python之Mysql及SQLAlchemy操作总结
一.Mysql命令总结 1.创建库 create database test1; 2.授权一个用户 grant all privileges on *.* to 'feng'@'%' identifi ...
- Python 使用sqlalchemy操作MYSQL
1. 安装sqlalchemy库 SQL操作引擎可能需要pymysql,故要安装如下两个程序 pip install sqlalchemy pip instal pymysql
- 04:sqlalchemy操作数据库
目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...
- SqlAlchemy操作(三)
1.基于SQLALCHEMY建表 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Colu ...
- SqlAlchemy操作(一)
博客转载于 http://www.cnblogs.com/haiyan123/p/8270520.html 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB ...
- SqlAlchemy操作(二)
SQLALchemy初始化链接数据库 1. 数据库配置. https://www.cnblogs.com/mengbin0546/p/10124560.html 2. python端操作. 一. ...
- python ORM - sqlalchemy 操作使用
python操作数据库 使用 ORM - sqlalchemy,pymsql 安装: pip install pymsq pip install sqlalchemy 一. '''连接数据库''' ...
随机推荐
- Python - 定制pattern的string模板(template) 具体解释
定制pattern的string模板(template) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 ...
- java中subString、split、stringTokenizer三种截取字符串方法的性能比较(转)
最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代? ...
- 在toolbar里动态创建多个button(ext.net)
private void setOneMenu() { string sql = "select id,name,gids from Config where name<>'高级 ...
- NET5
ASP.NET5(RC1) - 翻译 前言 ASP.NET 5 是一次令人惊叹的对于ASP.NET的创新革命. 他将构建目标瞄准了 .NET Core CLR, 同时ASP.NET又是对于云服务进行优 ...
- 单页应用Scrat实践
单页应用Scrat实践 1.开始 随着前端工程化深入研究,前端工程师现在碉堡了,甚至搞了个自己的前端网站http://div.io/需要邀请码才能注册,不过里面的技术确实牛.距离顶级的前端架构,目前博 ...
- 14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量
14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量 改变InnoDB redo ...
- HBase总结(二十)HBase经常使用shell命令具体说明
进入hbase shell console $HBASE_HOME/bin/hbase shell 假设有kerberos认证,须要事先使用对应的keytab进行一下认证(使用kinit命令),认证成 ...
- E. Mike and Foam(容斥原理)
E. Mike and Foam Mike is a bartender at Rico's bar. At Rico's, they put beer glasses in a special sh ...
- 在navigationItem中添加搜索栏
给navigationItem中添加个搜索栏,效果和大部分程序一样.代码如下: UISearchBar *searchBar = [[UISearchBaralloc] initWithFrame:C ...
- 解决windows下的mysql匿名登陆无法使用mysql数据库的问题
原文:解决windows下的mysql匿名登陆无法使用mysql数据库的问题 我在windows下安装了mysql,但是不用密码就能登进去,而root明明是有密码的,我用select user()命令 ...