SQLAlchemy session.refresh不刷新对象

威尔福

我有以下映射(直接来自SA示例):

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)

我正在使用MySql DB,并且该表具有innoDB引擎。

我的表中只有一条记录:1 |'user1'|'user1 test'|'password'

我用以下代码打开了一个会话:

from sqlalchemy.orm.session import sessionmaker
from sqlalchemy.engine import create_engine
from sqlalchemy.orm.scoping import scoped_session
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

db_engine = create_engine('mysql://...@localhost/test_db?charset=utf8',echo=False,pool_recycle=1800)
session_factory = sessionmaker(bind=db_engine,autocommit=False,autoflush=False)
session_maker = scoped_session(session_factory)
session = session_maker()

user_1 = session.query(User).filter(User.id==1).one()
user_1.name # This prints: u'user1'

现在,当我将数据库中的记录名称更改为“ user1_change”并提交时,然后像这样刷新对象:

session.refresh(user_1)
user_1.name # This still prints: u'user1' and not u'user1_change'

它仍然打印:u'user1',而不是u'user1_change'。

我在这里想念什么(或设置错误)?

谢谢!

西拉斯·雷

文档

请注意,高度隔离的事务将返回与先前在同一事务中读取的值相同的值,而不管该事务外部的数据库状态如何变化

SQLAlchemy使用事务性工作单元模型,其中每个事务均假定为内部一致。会话是事务顶部的接口。由于假定事务在内部是一致的,所以SQLAlchemy仅(很好,为了解释方便...)将从数据库中检索给定的数据,并且每个事务一次更新关联对象的状态。由于您已经在同一会话事务中查询了对象,因此SQLAlchemy将不会在该事务范围内再次从数据库中更新该对象中的数据。如果要轮询数据库,则每次都需要使用一个新的事务来进行处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQLAlchemy Session.Refresh不刷新对象

来自分类Dev

在SQLAlchemy中的session.commit()之后更新对象

来自分类Dev

session.delete之后出现意外的SQLAlchemy对象状态

来自分类Dev

SQLAlchemy,scoped_session-原始SQL INSERT不写入数据库

来自分类Dev

Flask sqlalchemy检查db.session中的对象是否已准备好提交

来自分类Dev

实例化对象会自动添加到SQLAlchemy Session中。为什么?

来自分类Dev

关于在sqlalchemy会话中刷新对象

来自分类Dev

SQLAlchemy删除不级联

来自分类Dev

在python asyncio中正确使用sqlalchemy scoped_session

来自分类Dev

在SQLAlchemy session.add中传递许多项目

来自分类Dev

如何在SQLAlchemy中还原/撤消`session.execute()`语句

来自分类Dev

SQLAlchemy scoped_session和“已附加”错误

来自分类Dev

SQLAlchemy最佳实践:何时/如何配置scoped_session?

来自分类Dev

SQLAlchemy最佳实践:何时/如何配置scoped_session?

来自分类Dev

如何实现sqlalchemy.orm.scoping.scoped_session代理功能?

来自分类Dev

Flask和SQLAlchemy db.session.commit无法正常工作

来自分类Dev

SQLAlchemy会话包含我的信息,而没有session.add()

来自分类Dev

SQLAlchemy scoped_session和“已附加”错误

来自分类Dev

sqlAlchemy: session.query(Model.column) 返回 false

来自分类Dev

空分页对象sqlalchemy

来自分类Dev

SQLAlchemy删除关联对象

来自分类Dev

SQLAlchemy删除关联对象

来自分类Dev

SQLAlchemy中的Session和db.session有什么区别?

来自分类Dev

sqlalchemy不执行模式注释

来自分类Dev

SQLAlchemy 不映射反射类

来自分类Dev

TutorialsPoint - Flask - SQLAlchemy 不工作

来自分类Dev

从对象分配$ _session var

来自分类Dev

从dict保存关系sqlalchemy对象

来自分类Dev

批量保存复杂对象SQLAlchemy

Related 相关文章

热门标签

归档