📜  在 SQLAlchemy 中选择 NULL 值(1)

📅  最后修改于: 2023-12-03 15:37:31.972000             🧑  作者: Mango

在 SQLAlchemy 中选择 NULL 值

在 SQL 中,NULL 值表示缺少值或未知值。在 SQLAlchemy 中,我们有多种方法来选择 NULL 值。

1. 使用 filter 或 filter_by

使用 filterfilter_by 时,我们可以使用 Nonenull() 函数来选择 NULL 值。

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import null

engine = create_engine('sqlite:///example.db', echo=True)
Session = sessionmaker(bind=engine)
session = Session()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

session.query(User).filter(User.age == None)  # 使用 None
session.query(User).filter(User.age == null())  # 使用 null() 函数
2. 使用 is_null 和 is_not_null

filterfilter_by 中,我们还可以使用 is_nullis_not_null 来选择 NULL 值。

session.query(User).filter(User.age.is_(None))
session.query(User).filter(User.age.is_(not_(None)))
3. 使用 select 和 column

在使用 selectcolumn 时,我们可以使用 is_(None)is_(not_(None)) 来选择 NULL 值。

from sqlalchemy import select, column

select([column('id'), column('age')]).where(column('age').is_(None))
select([column('id'), column('age')]).where(column('age').is_(not_(None)))
4. 使用 func

在使用 func 时,我们可以使用 null()isnull() 函数来选择 NULL 值。

from sqlalchemy import func

session.query(User).filter(func.isnull(User.age))  
session.query(User).filter(func.not_(func.isnull(User.age))) 

以上就是在 SQLAlchemy 中选择 NULL 值的方法。无论使用哪种方法,我们都可以轻松选择和操作 NULL 值。