2
이 레코드가 제거되었지만 테이블에 있음을 보여주는 모든 테이블에 is_deleted
필드가 있습니다.모든 SQLAlchemy 쿼리에서 기본 조건을 구현하는 방법
SQLAlchemy의 모든 쿼리에 is_deleted=True
개의 레코드를 무시하는 방법 (고려하지 마십시오)?
이 레코드가 제거되었지만 테이블에 있음을 보여주는 모든 테이블에 is_deleted
필드가 있습니다.모든 SQLAlchemy 쿼리에서 기본 조건을 구현하는 방법
SQLAlchemy의 모든 쿼리에 is_deleted=True
개의 레코드를 무시하는 방법 (고려하지 마십시오)?
sqlalchemy event이 해결책입니다!
from sqlalchemy.orm.query import Query
from sqlalchemy import event
@event.listens_for(Query, "before_compile", retval=True)
def no_deleted(query):
for desc in query.column_descriptions:
entity = desc['entity']
if entity:
query = query.filter(entity.is_deleted == False)
return query
당신은 그런이 내 경우 사용의 '사용자'로 모델명 (SQLAlchemy의 모델 클래스 이름)을 지정하려면 :
if entity == 'User':
query = query.filter(entity.is_verified == True)
는 필터링이 원시 SQL/코어 수준에서 수행 할 수 있습니까? 특정 쿼리 유형을 필터링하고 대체하려는 방언에서 말합니까? 내 특정 문제는 datetimes입니다 - https://stackoverflow.com/questions/46027152/which-part-of-sqlalchemys-dialect-is-responsible-for-pre-processing-queries – Jay