본문 바로가기
Python

Python - SQLAlchemy, NULL/empty Column 포함하기

by 올엠 2024. 4. 12.
반응형

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,
)​
 
필터링 관련된 내용들은 아래에서 확인 할 수 있다.

 

 
반응형