sqlalchemy报错sqlalchemy.orm.exc.DetachedInstanceError

解决方案:

在初始化数据库的代码中,将

python 复制代码
maker = sessionmaker(bind=eng)

修改为

python 复制代码
maker = sessionmaker(bind=eng, expire_on_commit=False)

为什么要添加 expire_on_commit=False 参数?

expire_on_commit 可以用来更改 SQLAlchemy 的对象刷新机制,默认值为 True ,即在 session 调用 commit 之后会主动将同一个session在commit之前查询得到的ORM对象的_sa_instance_state.expire属性设置为Flase,再次读取该对象属性时将重载这个对象,方法是重新调用之前的查询语句。

相关推荐
AI 算法大模型备案~当当11 分钟前
各地备案数量怎么看:一份属地公告的认读与台账方法
java·数据库·人工智能
梦帮科技38 分钟前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法
曹牧1 小时前
PL/SQL Developer:导出建表语句
数据库·sql
念念不忘 必有回响1 小时前
MySQL 事务与隔离级别完全指南
数据库·mysql
JosieBook2 小时前
【WinForm 代码反脆弱系列】04 数据库操作 —— 连接字符串、连接对象与连接池
数据库·oracle
小蒜学长2 小时前
基于SpringBoot+Vue的小学数学智能出题系统(代码+数据库+LW)
java·数据库·spring boot·后端·智能出题系统
71-32 小时前
MySQL密码重置
数据库·笔记·学习·mysql
锅里游的鱼吖3 小时前
echarts自定义折线图
前端·javascript·数据库
酷虎软件3 小时前
视频加标题字幕 API 接口文档
java·数据库·mysql
夜雪一千3 小时前
MySQL 触发器有哪些应用场景?从入门场景到避坑实战
数据库·mysql