特定の列から 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 None
。is not
オブジェクト同一性不等性テストオーバーロードすることはできません。インスタンスはシングルトンと同じオブジェクトではないため、代わりに次の!=
ようになります。True
ColumnClause
None
>>> column('YourColumn') is not None
True
*)このメソッドは以前は次のように命名されていましたisnot()
が、SQLAlchemy 1.4 で名前が変更されました。下位互換性のために古い名前も引き続き使用できます。