首页 > 数据库技术 > 详细

Python SQLAlchemy 连接MySQL的CURD操作 使用上下文管理 session

时间:2020-07-19 17:50:02      阅读:90      评论:0      收藏:0      [点我收藏+]

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

 

Python SQLAlchemy 连接MySQL的CURD操作 使用上下文管理 session

原文:https://www.cnblogs.com/john-xiong/p/13340280.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!