• Python SQLAlchemy相关操作


    Python SQLAlchemy相关操作

    from sqlalchemy import func, or_, not_
    
    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()
    query = session.query(User)
    print query # 显示SQL 语句
    print query.statement # 同上
    for user in query: # 遍历时查询
        print user.name
    print query.all() # 返回的是一个类似列表的对象
    print query.first().name # 记录不存在时,first() 会返回 None
    # print query.one().name # 不存在,或有多行记录时会抛出异常
    print query.filter(User.id == 2).first().name
    print query.get(2).name # 以主键获取,等效于上句
    print query.filter('id = 2').first().name # 支持字符串
    query2 = session.query(User.name)
    print query2.all() # 每行是个元组
    print query2.limit(1).all() # 最多返回 1 条记录
    print query2.offset(1).all() # 从第 2 条记录开始返回
    print query2.order_by(User.name).all()
    print query2.order_by('name').all()
    print query2.order_by(User.name.desc()).all()
    print query2.order_by('name desc').all()
    print session.query(User.id).order_by(User.name.desc(), User.id).all()
    print query2.filter(User.id == 1).scalar() # 如果有记录,返回第一条记录的第一个元素
    print session.query('id').select_from(User).filter('id = 1').scalar()
    print query2.filter(User.id > 1, User.name != 'a').scalar() # and
    query3 = query2.filter(User.id > 1) # 多次拼接的 filter 也是 and
    query3 = query3.filter(User.name != 'a')
    print query3.scalar()
    print query2.filter(or_(User.id == 1, User.id == 2)).all() # or
    print query2.filter(User.id.in_((1, 2))).all() # in
    query4 = session.query(User.id)
    print query4.filter(User.name == None).scalar()
    print query4.filter('name is null').scalar()
    print query4.filter(not_(User.name == None)).all() # not
    print query4.filter(User.name != None).all()
    print query4.count()
    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()
    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)

    ----------------------

  • 相关阅读:
    关于windows线程的各种状态
    《深入理解计算机系统》(第二版)第二章练习题3
    《深入理解计算机系统》(第二版)第二章中的一练习题2
    Linux进程/线程模型
    用户进程中执行的操作系统
    关于操作系统模型
    《深入理解计算机系统》(第二版)第二章中的一题目
    并发问题互斥(Dekker算法和Peterson算法)
    概率问题:星期二出生的孩子
    Yii添加扩展加载Ckeditor 4.0以上版本
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12770509.html
Copyright © 2020-2023  润新知