특정 열에서 NULL이 아닌 값을 선택하기 위해 SQL에서와 같이 필터를 추가하려면 어떻게해야합니까?
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
SQLAlchemy 필터로 어떻게 똑같이 할 수 있습니까?
select = select(table).select_from(table).where(all_filters)
답변
column_obj != None
IS NOT NULL
제약 조건 을 생성합니다 .
열 컨텍스트에서 절을 생성합니다
a != b
. 대상이None
이면IS NOT NULL
.
또는 사용 isnot()
(0.7.9의 새로운 기능) :
IS NOT
운영자를 구현하십시오 .일반적으로 로 해석되는
IS NOT
의 값과 비교할 때 자동으로 생성됩니다 . 그러나 특정 플랫폼에서 부울 값과 비교할 경우 명시 적으로 사용하는 것이 바람직 할 수 있습니다.None
NULL
IS NOT
데모:
>>> from sqlalchemy.sql import column
>>> column('YourColumn') != None
<sqlalchemy.sql.elements.BinaryExpression object at 0x10c8d8b90>
>>> str(column('YourColumn') != None)
'"YourColumn" IS NOT NULL'
>>> column('YourColumn').isnot(None)
<sqlalchemy.sql.elements.BinaryExpression object at 0x104603850>
>>> str(column('YourColumn').isnot(None))
'"YourColumn" IS NOT NULL'
답변
0.7.9 버전부터는 다음 .isnot
과 같이 제약 조건을 비교하는 대신 필터 연산자 를 사용할 수 있습니다 .
query.filter(User.name.isnot(None))
이 방법은 pep8이 우려되는 경우에만 필요합니다.
출처 : sqlalchemy 문서
답변
다른 사람이 궁금한 경우 다음 is_
을 생성 하는 데 사용할 수 있습니다 foo IS NULL
.
>>> sqlalchemy.sql 가져 오기 열에서 >>> print column ( 'foo'). is_ (None) foo는 NULL입니다. >>> print column ( 'foo'). isnot (None) foo는 NULL이 아닙니다.