zoukankan      html  css  js  c++  java
  • Python SQLAlchemy 连接MySQL的CURD操作 使用上下文管理 session

    使用 contextmanager 来管理

    from sqlalchemy import create_engine
    from sqlalchemy.orm import scoped_session,sessionmaker
     
     
    db_connect = "mysql+pymysql://root:password@localhost:3306/db_name?charset=utf8"
     
    create=create_engine(db_connect)
    SessionType=scoped_session(sessionmaker(bind=create,expire_on_commit=False))
     
    def GetSession():
        return SessionType()
     
    from contextlib import contextmanager
     
    @contextmanager
    def session_socpe():
        session=GetSession()
        try:
            yield session
            session.commit()
        except:
            session.rollback()
            raise
        finally:
            session.close()
    

      


     用法
     查询

    with session_socpe() as session:
        obj = session.query(Model类).filter(Model类.字段==参数).first()
    

      


    增加

    with session_socpe() as session:
        obj = Model类(字段1=值1, 字段2=值2, 字段3=值3)
        session.add(obj)
    

      


     删除

    with session_socpe() as session:
      obj = session.query(Model类).filter(Model类.字段==参数).delete()
    

      


    修改

    with session_socpe() as session:
      obj = session.query(Model类).filter(Model类.字段==参数).update({"修改字段":"修改值"})
    

      


    每次修改时,不用频繁地session.commit()

    也方便了 万一出错后 的 rollback 回滚

  • 相关阅读:
    spring-data-elasticsearch (elasticsearch 6.7.0) @Document 和 @Field 注解详解
    干货链接(大神)
    Excel word PDF导入导出 Easy POI
    helm 源大集合
    K8s学习干货
    K8S
    阳明大神---容器时代
    K8s高可用集群部署
    最小 docker_lpnm系统
    python 协程和异步编程全解
  • 原文地址:https://www.cnblogs.com/john-xiong/p/13340280.html
Copyright © 2011-2022 走看看