擅长:python、mysql、java
<p>您正在尝试删除一个新实例,而不是从数据库中获取的实例。要么你打算使用<code>db.session.add()</code>,要么你打算使用<code>user = User.query.filter_by(email='john@john.com').first()</code>(或类似的东西)并删除它。</p>
<p>您还可能在访问已删除实例的属性时遇到问题(假设您如上所述正确删除了该实例)。提交会话时,该会话中的所有实例都将过期。尝试访问过期的属性会触发数据库查找,但不能查找此对象,因为它已被删除。</p>
<p>您可以关闭<a href="http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.sessionmaker.params.expire_on_commit" rel="noreferrer">^{<cd3>}</a>,但这不是正常行为,可能会导致其他问题。</p>
<p>您也可以尝试在上面调用<a href="http://docs.sqlalchemy.org/en/latest/orm/session.html?highlight=delete#sqlalchemy.orm.session.make_transient" rel="noreferrer">^{<cd4>}</a>。</p>
<p>最终,您应该放弃已删除的实例。也许有更好的方法去做你想做的事情。</p>