我试图了解 的expire_on_commitSession参数的行为。
所以我创建了一个小程序,添加 2 行,更新其中一行,然后访问另一行:
engine = sa.create_engine('sqlite:///tmp.db', echo=True)
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine, expire_on_commit=True)
session = Session()
# add 2 users
u1 = User(name="u1")
u2 = User(name="u2")
session.add(u1)
session.add(u2)
session.commit()
# update a user
u1.name = "new name"
session.commit()
print("=== access a user ===")
print(u2.name)
Run Code Online (Sandbox Code Playgroud)
输出时间expire_on_commit为True(默认):
2018-07-13 13:38:14,478 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 …Run Code Online (Sandbox Code Playgroud)