python - SQLAlchemy delete() 函数刷新,但不提交,即使在调用 commit() 之后

标签 python postgresql flask sqlalchemy

我有一个 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/

相关文章:

python - 我如何在 Flask/WSGI 服务器中使用应用程序工厂,为什么它可能不安全?

Python:删除列中的相似字符串

python - 如果设置为 null,如何创建具有默认值的 Django 模型字段

sql - PostgreSQL 索引未用于查询

ruby-on-rails - 在安装 PostgreSQL 后发现 ruby​​、rails、git 时出现问题

python - 下载CSV文件到客户端

python - Facebook Messenger 与 Flask

python - 行李箱工作标签没有吗? ---导入错误: No module named 2. 1.2

python - 从外部停止循环的最佳方法是什么?

PostgreSQL:使用 ONLY_FULL_GROUP_BY 事件的 2 级连接的 COUNT() 行