zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    微信JS SDK Demo
    微信jssdk常见错误及解决方法
    多机定时任务处理
    python zip压缩文件 并移动到指定目录
    Nginx + Uswgi + Django的部署
    pycharm 安装第三方库报错:AttributeError: 'module' object has no attribute 'main'
    zabbix监控
    转:老张喝茶 教你同步异步 阻塞与非阻塞
    odoo开发笔记 -- 多对多字段追加数据
    xml文件对比工具推荐:Altova XMLSpy 2013
  • 原文地址:https://www.cnblogs.com/vinic-xxm/p/11390718.html
Copyright © 2011-2022 走看看