sqlalchemy IS NOT NULL 選択 質問する

sqlalchemy IS NOT NULL 選択 質問する

特定の列から NULL でない値を選択するために、SQL のようにフィルターを追加するにはどうすればよいですか?

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

SQLAlchemy フィルターで同じことを行うにはどうすればいいでしょうか?

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

ベストアンサー1

column_obj != None生産されるIS NOT NULL制約:

列コンテキストでは、 句 が生成されますa != b。ターゲットが の場合はNone、 が生成されますIS NOT NULL

または使用is_not()* :

演算子を実装しますIS NOT

通常、IS NOTは の値と比較するときに自動的に生成されNone、 に解決されますNULL。ただし、特定のプラットフォームでブール値と比較する場合は、 を明示的に使用することIS NOTが望ましい場合があります。

デモ:

>>> from sqlalchemy.sql import column
>>> column('YourColumn') != None
<sqlalchemy.sql.elements.BinaryExpression object at 0x10f81aa90>
>>> print(column('YourColumn') != None)
"YourColumn" IS NOT NULL
>>> column('YourColumn').is_not(None)
<sqlalchemy.sql.elements.BinaryExpression object at 0x11081edf0>
>>> print(column('YourColumn').is_not(None))
"YourColumn" IS NOT NULL

ここでは使えませんis not Noneis notオブジェクト同一性不等性テストオーバーロードすることはできません。インスタンスはシングルトンと同じオブジェクトではないため、代わりに次の!=ようになります。TrueColumnClauseNone

>>> column('YourColumn') is not None
True

*)このメソッドは以前は次のように命名されていましたisnot()が、SQLAlchemy 1.4 で名前が変更されました。下位互換性のために古い名前も引き続き使用できます。

おすすめ記事