Python SQLAlchemy 連線MySQL的CURD操作 使用上下文管理 session
阿新 • • 發佈:2020-07-19
使用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 回滾