擅长:python、mysql、java
<p>默认情况下,sqlalchemy不会。在</p>
<p>考虑以下自包含的示例代码。在</p>
<pre><code>from sqlalchemy import Column, Integer, Unicode, create_engine
from sqlalchemy.orm import create_session
from sqlalchemy.ext.declarative import declarative_base
e = create_engine('sqlite://')
Base = declarative_base(bind=e)
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(Unicode(50))
# create the empty table and a session
Base.metadata.create_all()
s = create_session(bind=e, autoflush=False, autocommit=False)
# assert the table is empty
assert s.query(User).all() == []
# create a new User instance but don't save it to database:
u = User()
u.name = 'siebert'
# I could run s.add(u) here but I won't
s.flush()
s.commit()
# assert the table is still empty
assert s.query(User).all() == []
</code></pre>
<p>所以我不确定在会话中添加实例是什么意思。通常,您必须手动调用<code>s.add(u)</code>使其转到会话。我不熟悉长生不老药,所以也许这是一些长生不老药的诡计。。。也许您可以使用<a href="http://www.sqlalchemy.org/docs/reference/orm/sessions.html#sqlalchemy.orm.session.Session.expunge" rel="nofollow noreferrer">^{<cd2>}</a>将其从会话中删除。在</p>