📅  最后修改于: 2023-12-03 15:37:31.972000             🧑  作者: Mango
在 SQL 中,NULL 值表示缺少值或未知值。在 SQLAlchemy 中,我们有多种方法来选择 NULL 值。
使用 filter
或 filter_by
时,我们可以使用 None
或 null()
函数来选择 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() 函数
在 filter
或 filter_by
中,我们还可以使用 is_null
和 is_not_null
来选择 NULL 值。
session.query(User).filter(User.age.is_(None))
session.query(User).filter(User.age.is_(not_(None)))
在使用 select
和 column
时,我们可以使用 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)))
在使用 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 值。