zoukankan      html  css  js  c++  java
  • 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)]
    

      

  • 相关阅读:
    Epoll技术深入学习
    nginx
    epoll案例
    Linux网络编程初步
    链表快速排序(已通过ACM在线评测)
    C++内存管理
    c++11并发语法初步
    数据库与SQL优化笔记(一)
    C++面向对象模型(虚表与虚表指针)
    c++的一些杂项
  • 原文地址:https://www.cnblogs.com/bigberg/p/8318214.html
Copyright © 2011-2022 走看看