SQLAlchemy带可选解决方案的预筛选查询

2024-10-04 03:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在SQLAlchemy中,我将查询子类化,以便根据预过滤方法对查询进行预过滤:Pre-Filtering Query

但在某些情况下,我想绕过预过滤器来包含过滤掉的结果。Flask SQLAlchemy中的一个例子在查询中有一个方法,但是我正在努力使它适应我的普通sqlachemy。在

class QueryWithSoftDelete(BaseQuery):
   def __new__(cls, *args, **kwargs):
       obj = super(QueryWithSoftDelete, cls).__new__(cls)
       with_deleted = kwargs.pop('_with_deleted', False)
       if len(args) > 0:
           super(QueryWithSoftDelete, obj).__init__(*args, **kwargs)
           return obj.filter_by(deleted=False) if not with_deleted else obj
       return obj

   def __init__(self, *args, **kwargs):
       pass

   def with_deleted(self):
       return self.__class__(db.class_mapper(self._mapper_zero().class_),
                             session=db.session(), _with_deleted=True)

https://blog.miguelgrinberg.com/post/implementing-the-soft-delete-pattern-with-flask-and-sqlalchemy

如何在查询中包含这些结果?在


Tags: 方法selfobjnewreturnsqlalchemydefwith