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

  • 相关阅读:
    安装MSSQL2008出现的问题记录
    制作安装包遇到的问题
    算法设计方法动态规划
    基础果然要牢记(一次失败的电面)
    搜狗垂搜笔试
    几种堆的时间复杂度分析
    正则表达式转NFA
    组合数学(1)
    算法设计方法贪心算法
    最短路径问题
  • 原文地址:https://www.cnblogs.com/john-xiong/p/13340280.html
Copyright © 2011-2022 走看看