1. 程式人生 > 實用技巧 >Python SQLAlchemy 連線MySQL的CURD操作 使用上下文管理 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 回滾