flask 使用 sessionmaker

from contextlib import contextmanager
from flask import Flask
from your_database_module import SessionLocal # 假设已定义

app = Flask(__name__)

@contextmanager
def session_scope():
"""提供一个事务范围,自动处理提交、回滚和关闭"""
session = SessionLocal()
try:
yield session
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()

# 在视图函数中使用
@app.route('/create')
def create_item():
# 使用 with 语句,退出块时自动 commit/rollback/close
with session_scope() as session:
new_item = Item(name="test")
session.add(new_item)
# 这里不需要手动 commit 或 close
return "Item created"

posted on 2026-08-27 22:18  漫思  阅读(5)  评论(0)    收藏  举报

导航