我有以下的映射(直接從SA的例子):SQLAlchemy的session.refresh不會刷新對象
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)
我與一個MySQL數據庫和工作表有一個InnoDB引擎。
我有我的表中的一條記錄: 1 | 'user1的' | 'user1的測試' | '密碼'
我已經打開用下面的代碼會話:
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://[email protected]/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'
現在,當我在DB更改記錄的名稱爲「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會話之外的其他方式(例如,使用類似phpMyAdmin的內容)更改記錄? –
與mysql-workbech一起工作,我改變了數據庫中的值並提交,完全在SQLalchemy的雷達下 - 但那應該不重要,對吧? – wilfo