SQLAlchemy delete()函数刷新,但即使在调用commit()之后也没有提交

时间:2015-09-04 20:05:39

标签: python postgresql flask sqlalchemy

我有一个烧瓶应用,它使用 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,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

您将使用已删除的行数覆盖sess,然后尝试将该数字提交到数据库。 .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"