所以我添加了用户:
john = User(name='John')
mary = User(name='Mary')
session.add([john, mary])
session.commit()
mary = s.query(User).filter(User.name == 'Mary').one()
mary.id
输出:2
session.delete(mary)
session.commit()
mary.id
输出:2
如果有帮助,我正在研究pythoncentral.io上的教程
https://www.pythoncentral.io/understanding-python-sqlalchemy-session/
答案 0 :(得分:1)
该对象不再位于数据库中,您只是在仍与mary
连接的对象上调用一个值。
我想不出为什么您需要对此做任何特别的事情。您已经完成了对象,对不对?忽略它。 mary.id
的值只是它在数据库中以前的存在的反映。
但是,如果您想继续使用mary
对象,也许在没有原始ID的情况下重新提交,则必须使用make_transient()
:
from sqlalchemy.orm.session import make_transient
make_transient(mary)
现在,您可以将mary
读入数据库并重新提交。她会保留她原来的身份证号,但是您可以通过在阅读并重新提交之前设置mary.id = None
来轻松地防止该错误。