postgresql - 确定 SQLAlchemy 对象上的哪些字段是脏的

标签 postgresql sqlalchemy

我知道,使用 SQLAlchemy 的 session 对象,我可以调用 session.dirty 来获取所有需要提交到数据库的更改的对象。但是我如何确定任何一个对象上的哪些特定字段是脏的?是否有一种方法可以调用返回这些字段的特定对象?或者我可以将对象传递给 session 的类方法之一来获取它?

最佳答案

History 中的示例类:

from sqlalchemy import inspect

hist = inspect(myobject).attrs.myattribute.history

如果您想检查给定对象实例的所有已定义属性,您可能会这样做:

def print_changes(myobj):
    from sqlalchemy.orm import class_mapper
    from sqlalchemy import inspect
    inspr = inspect(myobj)
    attrs = class_mapper(myobj.__class__).column_attrs  # exclude relationships
    for attr in attrs:
        hist = getattr(inspr.attrs, attr.key).history
        print(attr.key, hist.has_changes())

关于postgresql - 确定 SQLAlchemy 对象上的哪些字段是脏的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353048/

相关文章:

PostgreSQL 9.4 : index not working in a pattern search

sql - 获取具有每月创建日期的记录

python - 将 SQLAlchemy 事件监听器放置在多对多表上

python - 如何向 sqlalchemy 中的表添加自定义的任意选项?

python - SQLAlchemy 自动增量未正确插入

sql - 我的 PSQL View 表出了什么问题?

database - 如何在 `where` 条件列表上循环 postgresql 查询

c++ - 在PostgreSQL中根据其ID选择很多行的最快方法?

python - 在 sqlalchemy 中使用多列从另一个表更新一个表

sqlalchemy - get和filter不能混用吗?