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 回滚

  • 相关阅读:
    java.util中的Stack,Queue,Iterable;泛型
    java.util中的Collection,Map;
    java.lang中的异常类2020.12.18
    java.util包,Date,Calender,Random,Collection.202012.19/20号补写
    vue框架搭建流程
    Django model中的class Meta详解
    Python重要配置大全
    Python进程与线程
    Pandas模块
    程序语言官方网址大全
  • 原文地址:https://www.cnblogs.com/john-xiong/p/13340280.html
Copyright © 2011-2022 走看看