반응형
Python을 사용하는데, SQLAlchemy를 활용하는 경우가 많다.
이때 NULL을 허용하는 Column이 정상적으로 조회가 되지 않는 경우가 발생하면서, !=과 is not 의 차이점을 알게되었는데 다음과 같다.
A Column에는 Int형으로, 1과 0으로 데이터를 넣을 수 있고, Null을 포함한 데이터가 쌓이고 있었다.
하여 필자가 만들고 싶었던 쿼리는 다음과 같다.
# 원하는 쿼리
select *
from Table
where Table.result is not 1
그래서 != 1 통해 쿼리를 만들어 조회하였다.
Session.query(Table).filter(Table.result != 1).all()
하지만 실제 쿼리를 해보면, NULL 이거나 Empty인 컬럼은 조회가 되지 않는다.
이는 실제 NULL이 롤링되는 방식이 다르기 때문에 발생하는 문제라고 한다.참도 거짓도 아닌 NULL 자체로 평가 받기 때문에 !=의 참 거짓에 포함되지 않는 것이다.
이를 간단한 방법으로 해소 하였는데, 바로 is not을 이용해서 해결 하였다.
이외에도 아래와 같은 3가지 쿼리를 이용하여 NULL 컬럼을 포함하여 호출하는 것이 가능하다.
혹은 _or 조건을 이용하는 것도 가능하다.
_or(
Table.column == None,
Table.column != 1,
)
필터링 관련된 내용들은 아래에서 확인 할 수 있다.
https://docs.sqlalchemy.org/en/14/core/sqlelement.html#sqlalchemy.sql.expression.ColumnElement.isnot
반응형
'Python' 카테고리의 다른 글
Python - 리스트(Lists)간 교집합(중복/공통값), 합집합(고유/유일값) 값 확인하기 (0) | 2024.04.12 |
---|---|
Django - MySQL/MariaDB 연결하기 (0) | 2024.04.12 |
Python - JIRA API 로그인 및 검색하기 (0) | 2024.04.12 |
Regex - 소/중/대 괄호 이해 (1) | 2024.04.08 |
SQLalchemy - Query 결과 데이터 Dict로 변환하기 (0) | 2024.04.01 |