python sqlalchemy session_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、付费专栏及课程。

余额充值