Tags
Note
This post is a thought. It's a short note that I make about someone else's content online. Learn more about the process thoughts
Here's my thought on 馃挱 Proper handling of None in WHERE condition 路 Issue #109 路 fastapi/sqlmodel 路 GitHub
SQLModel models ship with an is_
, and is_not
that you can use to compare to None without pesky linters complaining.
This comment summed it up quite well.
I believe this is concerned entirely with SQLAlchemy, not with SQLModel, and has to do with the required semantics to construct a BinaryExpression object. Hero.age == None evaluates to a BinaryExpression object which is eventually used to construct the SQL query that the SQLAlchemy engine issues to your DBMS. Hero.age is None evaluates to False immediately, and not a BinaryExpression, which short-circuits the query no matter the value of age in a row. From a cursory search, it does not seem that the is operator can be overridden in Python. This could help explain why the only possibility is by using the == operator, which can be overridden.
so rather than using Team.heros == None
we can use Team.seros.is_(None)
which checks for itentity not equality.
This post was a thought by Waylon Walker see all my thoughts at https://waylonwalker.com/thoughts