zoukankan      html  css  js  c++  java
  • pythonのsqlalchemy简单查询

    #!/usr/bin/env python
    import sqlalchemy
    from sqlalchemy import create_engine
    from  sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column,Integer,String
    from sqlalchemy.orm import sessionmaker
    
    # 创建连接 echo=True 就会打印出所有过程信息
    engine = create_engine("mysql+pymysql://root:root@localhost/testuser",encoding="utf-8",echo=True)
    
    #
    Base = declarative_base() # 生成orm基类
    
    class User(Base):
        __tablename__= "user"
        id = Column(Integer,primary_key=True)
        name = Column(String(32))
        password = Column(String(64))
    
    
    Base.metadata.create_all(engine) # 创建表结构
    
    Session_class = sessionmaker(bind=engine) # 创建与数据库的会话session class 注意,这里返回的是一个class,不是实例
    
    session = Session_class()
    #
    # user_obj = User(name="zhangpeng",password="123") # 生成你要创建的数据对象
    # print(user_obj.name,user_obj.id) # 此时还没有创建对象,ID为None
    #
    # session.add(user_obj)
    # print(user_obj.name,user_obj.id) # 此时依然为空
    # session.commit() # 统一提交
    
    # filter_by(name="zhangpeng") 条件; all  全部  first 第一个
    # filter(User.id>2) ;按照ID查询
    # data = session.query(User).filter_by(name="zhangsan").all()
    
    # -- 修改
    data = session.query(User).filter_by(name="aaa").first()
    if(data is not None):
        data.name = "zhangsan"
    
    session.commit() # 提交
    # -- 修改
    
    # -- 回滚
    my_user = session.query(User).filter_by(id=1).first()
    my_user.name = "Jack"
    fake_user = User(name="Rain",password="123456")
    session.add(fake_user)
    # 这时候看session里有你刚添加的数据
    print("....",session.query(User).filter(User.name.in_(["jack","rain"])).all())
    
    session.rollback() # 此时回滚一下,之前数据应该就消失了
    print(session.query(User).filter(User.name.in_(["jack","rain"])).all())
    
    # -- 回滚
    
    
    # 获取所有数据
    print(session.query(User.name,User.id).all())
    
    
    # 多条件查询
    objs = session.query(User).filter(User.id>0).filter(User.id<7).all()
    # 查询出来是一个数组
    print(objs[0].name)
    
    # 模糊查询,并统计个数
    count = session.query(User).filter(User.name.like("%y%")).count()
    print(count)
    
    # 分组查询
    from sqlalchemy import func
    print(session.query(func.count(User.name),User.name).group_by(User.name).all())
    
    # 删除
    del_user = session.query(User).filter(User.id==1).first()
    session.delete(del_user)
    session.commit()
  • 相关阅读:
    topk 问题 --转载
    MySQL是否使用外键
    MySQL的事务隔离---总结和转载
    MySQL设计规范--转自腾讯云社区
    docker图解--转载
    单点登录soo-转载
    在linux上配置后端所需的内容
    推荐一个计算机漫画地址
    python与mysql数据库连接中常见错误
    python_excel_读写(转载)
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/9672946.html
Copyright © 2011-2022 走看看