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 一. '''连接数据库''' ...
随机推荐
- oracle触发器中增删改查本表
oracle触发器中增删改查本表 (1)只有before insert触发器中才可以查询或更新本表 create or replace trigger tri_test_ins before inse ...
- 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.N ...
- javascript实现图片无缝滚动(scrollLeft的使用方法介绍)
<!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" conten ...
- vim高级编辑(一)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- SVN无法修改以前提交日志的办法
一直用SVN作为代码备份,但是今天偶然发现SVN上不能修改意见提交的代码,于是乎开始谷歌了,最后发现只需要在该工程下的hooks目录下放入pre-revprop-change.bat文件即可. pre ...
- 第四题(迅雷笔试题):编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
#include <iostream> #include <stdlib.h> #include <pthread.h> using namespace std; ...
- vdsm的SSL证书验证过程
1. Copy the VDSM certificate of the RHEV-H(Red Hat Enterprise Virtualization Hypervisor ) host to th ...
- 英文版Ubuntu安装Fcitx输入法
在英文环境(LC_CTYPE=en_US.UTF-8)下安装,可按如下配置: 首先,执行 sudo apt-get install fcitx-pinyin im-switch 然后,执行 im-sw ...
- HelloGithub
<HelloGithub月刊>第一期 <HelloGithub月刊> 因为现在这个项目只有我自己做,只敢叫“月刊”,希望有志同道合者,快点加入到这个项目中来!同时,如果您有 ...
- Android在ListView显示图片(重复混乱闪烁问题)
Android在ListView显示图片(重复混乱闪烁问题) 1.原因分析 ListView item缓存机制: 为了使得性能更优,ListView会缓存行item(某行相应的View). ListV ...