小编Era*_*man的帖子

SQL炼金术:了解expire_on_commit

我试图了解 的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_commitTrue(默认):

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)

python sqlalchemy

2
推荐指数
1
解决办法
4580
查看次数

标签 统计

python ×1

sqlalchemy ×1