Python.Sqlalchemy.使用OEM相关语句

10 篇文章 0 订阅
4 篇文章 0 订阅

新增数据

user = User(name='a')
session.add(user)
user = User(name='b')
session.add(user)
user = User(name='a')
session.add(user)
user = User()
session.add(user)
session.commit()

使用User表相关操作

from sqlalchemy import func, or_, not_
import sqlalchemy as SA

print session.query(User) # 显示SQL 语句
print session.query(User).statement # 同上
for user in session.query(User): # 遍历时查询
    print user.name
print session.query(User).all() # 返回的是一个类似列表的对象
print session.query(User).first().name # 记录不存在时,first() 会返回 None
print session.query(User).one().name # 不存在,或有多行记录时会抛出异常
print session.query(User).filter(User.id == 2).first()
print session.query(User).get(2) # 以主键获取,等效于上句
print session.query(User).filter('id = 2').first().name # 支持字符串

print session.query(User).all() # 每行是个元组
print session.query(User).limit(1).all() # 最多返回 1 条记录
print session.query(User).offset(1).all() # 从第 2 条记录开始返回
print session.query(User).order_by(User.name).all()
print session.query(User).order_by('name').all()
print session.query(User).order_by(User.name.desc()).all()
print session.query(User).order_by('name desc').all()
print session.query(User).order_by(User.name.desc(), User.id).all() # 几种排序方式
print session.query(User).filter(User.id == 1).scalar() # 如果有记录,返回第一条记录的第一个元素
print session.query('id').select_from(User).filter('id = 1').scalar()

print session.query(User).filter(User.id > 1, User.name != 'a').scalar() # and
print session.query(User).filter(
    SA._and(User.id > 1, User.name != 'a')).scalar() # and
print session.query(User).filter(or_(User.id == 1, User.id == 2)).all() # or
print session.query(User).filter(User.id.in_((1, 2))).all() # in

print session.query(User).filter(not_(User.name == None)).all() # not
print session.query(User).filter(User.name == None).scalar()
print session.query(User).filter('name is null').scalar()
print session.query(User).filter(User.name != None).all()

print session.query(func.count('*')).select_from(User).scalar()
print session.query(func.count('1')).select_from(User).scalar()
print session.query(func.count(User.id)).scalar()
print session.query(func.count('*')).filter(User.id > 0).scalar() # filter() 中包含 User,因此不需要指定表
print session.query(func.count('*')).filter(User.name == 'a').limit(1).scalar() == 1 # 可以用 limit() 限制 count() 的返回数
print session.query(func.sum(User.id)).scalar()
print session.query(func.now()).scalar() # func 后可以跟任意函数名,只要该数据库支持
print session.query(func.current_timestamp()).scalar()
print session.query(func.md5(User.name)).filter(User.id == 1).scalar()

session.query(User).filter(User.id == 1).update({User.name: 'c'})
user.name = 'd'
session.flush() # 写数据库,但并不提交

print session.query(User).get(1).name
session.delete(user)
session.flush()
print session.query(User).get(1)
session.rollback() # 回滚操作

print session.query(User).get(1).name
session.query(User).filter(User.id == 1).delete()

session.commit() # 提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值