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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值