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