代码之家  ›  专栏  ›  技术社区  ›  David 54321

为什么会这样用户id即使在提交删除后仍保留值?

  •  0
  • David 54321  · 技术社区  · 6 年前

    所以我添加了用户:

    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

    • 为什么这两个仍然存在?

    我正在做一个来自蟒蛇中心,如果有帮助的话

    https://www.pythoncentral.io/understanding-python-sqlalchemy-session/

    0 回复  |  直到 6 年前
        1
  •  1
  •   mas tiz.io    6 年前

    对象不再在数据库中,您只需调用仍与连接的对象上的值 mary

    我想不出你为什么要对它做什么特别的事。你已经搞定了,对吧?别理它。价值 mary.id 只是它以前出现在数据库中的一个回音。

    但是如果你想继续使用 玛丽 对象,可能在没有原始id的情况下重新提交它,您必须使用 make_transient() :

    from sqlalchemy.orm.session import make_transient
    
    make_transient(mary)
    

    玛丽 去数据库然后重新提交给她。她会保留原来的身份证号码,但你可以通过设置 mary.id = None