我有一个 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 )。
此外,您在创建 session 时设置了 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"
关于python - SQLAlchemy delete() 函数刷新,但不提交,即使在调用 commit() 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32405800/