Programing

sqlalchemy는 NULL이 아닙니다.

lottogame 2020. 10. 23. 07:30
반응형

sqlalchemy는 NULL이 아닙니다.


특정 열에서 NULL이 아닌 값을 선택하기 위해 SQL에서와 같이 필터를 추가하려면 어떻게해야합니까?

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

SQLAlchemy 필터로 어떻게 똑같이 할 수 있습니까?

select = select(table).select_from(table).where(all_filters) 

column_obj != NoneIS NOT NULL제약 조건 을 생성합니다 .

열 컨텍스트에서 절을 생성합니다 a != b. 대상이 None이면 IS NOT NULL.

또는 사용 isnot()(0.7.9의 새로운 기능) :

IS NOT운영자를 구현하십시오 .

일반적으로 로 해석되는 IS NOT의 값과 비교할 때 자동으로 생성됩니다 . 그러나 특정 플랫폼에서 부울 값과 비교할 경우 명시 적으로 사용하는 것이 바람직 할 수 있습니다.NoneNULLIS 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이 아닙니다.

나를 위해 다음을 수행하면 예상되는 동작을 얻습니다.

query = query.filter(Model1.column1 == None)

다음을 수행하면 필터가 적용되지 않는 것 같습니다.

query = query.filter(Model1.column1 is None)

참고 URL : https://stackoverflow.com/questions/21784851/sqlalchemy-is-not-null-select

반응형