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 之后会主动将同一个sessioncommit之前查询得到的ORM对象的_sa_instance_state.expire属性设置为Flase,再次读取该对象属性时将重载这个对象,方法是重新调用之前的查询语句。

相关推荐
m0_748255656 小时前
DuckDB:pg_duckdb集成DuckDB和PostgreSQL实现高效数据分析
数据库·postgresql·数据分析
阿雄不会写代码6 小时前
数据库如何清空重置索引,MySQL PostgreSQL SQLite SQL Server
数据库·mysql·postgresql
猿小喵7 小时前
redo和binlog区别
数据库·mysql
潇湘秦9 小时前
Oracle CDB自动处理表空间不足脚本
数据库·oracle
梓沂9 小时前
Oracle中与 NLS(National Language Support,国家语言支持) 相关的参数
数据库·oracle
angen20189 小时前
mysql 存储过程和自定义函数 详解
数据库·mysql
m0_7482495410 小时前
DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)
数据库·postgresql·区块链
q5673152311 小时前
无法在Django 1.6中导入自定义应用
android·开发语言·数据库·django·sqlite
茂桑11 小时前
Redis的数据过期策略和数据淘汰策略
java·数据库·redis
dxt_snow13 小时前
Centos7系统安装redis
数据库·redis·缓存