• sqlalchemy相关操作(ORM)


    环境:python3.7,pycharm,mysql

    ORM(Object-Relational-Mapper)

    对象关系映射(ORM)是一种允许您使用面向对象的范例从数据库查询和操作数据的技术,sqlalchemy是实现ORM技术其中一个库(框架)。

    优势

    • 简化开发,因为它可以自动执行对象到表和表到对象的转换,从而降低开发和维护成本
    • 与嵌入式SQL和手写存储过程相比,代码更少
    • 应用程序层中的透明对象缓存,提高了系统性能
    • 优化的解决方案使应用程序更快,更易于维护

    映射类型

    sqlalchemy操作mysql数据库

    1.导入
    import sqlalchemy
    from sqlalchemy.ext.declarative import declarative_base
    
    2.链接数据库
    db = sqlalchemy.create_engine("mysql+pymysql://root:11111111@localhost/demo")
    
    3.创建一个继承基类
    base = declarative_base(db)
    
    4.映射
    class User(base):
        __tablename__ = 'student'
    
        id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
        name = sqlalchemy.Column(sqlalchemy.String(32))
    
    5.创建表
    if __name__ == '__main__':
    
       base.metadata.create_all(db)
    
    6.操作数据库
    1.导入
    from sqlalchemy.orm import sessionmaker
    
    2.绑定一个查询实例
    session = sessionmaker(bind=db)
    session = session()
    
    3.插入 
    ######插入单条数据
    user =User(
        id = 4,
        name='python'
    )
    session.add(user)
    session.commit()
    
    ######插入多条数据
    session.add_all(
       [
           User(id=5,name='java'),
           User(id=6,name='php')
       ]
     )
    session.commit()
    
    4.查询
    ######查询多条数据
    data = session.query(User).all()
    for x in data:
        print (x.name)
    
    data = session.query(User).filter(User.name== 'xxxx').all()
    ######查询单条数据
    data = session.query(User).filter(User.name == 'xxxx').first()
    data = session.query(User).filter_by(name='xxxx').first()
    ######使用get查询id
    data = session.query(User).get(ident = 10)
    print (data.name)
    
    5.修改
    data = session.query(User).get(10)
    print (data)
    data.name = 'laoli'
    session.merge(data)
    session.commit()
    或者
    session.query(User).filter(User.id == 10).update({User.name:"xxxxx",User.id:11})
    session.commit()
    
    6.删除
    data = session.query(User).filter(User.id == 11).first()
    session.delete(data)
    session.commit()
  • 相关阅读:
    张晓涵组《课程设计》结题报告
    20145218张晓涵小组课程设计中期检查
    wireshark使用简介
    20145218张晓涵 web安全基础实践
    20145218张晓涵_Web基础
    2017-2018-1 20155333 《信息安全系统设计基础》第十四周学习总结
    第十六周课堂测试
    2017-2018-1 20155333 《信息安全系统设计基础》第十三周学习总结
    2017-2018-1 20155333 《信息安全系统设计基础》实验五通讯协议设计
    2017-2018-1 20155333 《信息安全系统设计基础》第十一周学习总结
  • 原文地址:https://www.cnblogs.com/vinic-xxm/p/11390718.html
Copyright © 2020-2023  润新知