我有一个flask使用的应用程序sqlalchemy读、写postgres架构。当我使用.delete()
函数时,它只会刷新,但不会发生对数据库的实际更改。
Session = (sessionmaker(autocommit=False, autoflush=False,bind=conn))
sess = Session()
sess.query(Table).filter(Column.id==1).delete()
sess.commit()
我试过没有scoped_session
,但仍然是同样的问题。
您正在用已删除的行数覆盖 sess,然后尝试将该数字提交到数据库。 .delete() 方法返回要删除的行数 (http://docs.sqlalchemy.org/en/rel_1_0/orm/query.html#sqlalchemy.orm.query.Query.delete http://docs.sqlalchemy.org/en/rel_1_0/orm/query.html#sqlalchemy.orm.query.Query.delete).
此外,您在创建会话时设置了 autoflush=False。这使得您必须在提交后显式刷新到数据库。我建议这样:
Session = sessionmaker(autocommit=False, bind=conn)
sess = Session()
rows_deleted = sess.query(Table).filter(Column.id==1).delete()
sess.commit()
print str(rows_deleted) + " rows were deleted"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)