web-dev-qa-db-ja.com

sqlalchemy IS NOT NULL選択

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

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

SQLAlchemyフィルターでも同じことができますか?

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

column_obj != NoneIS NOT NULL制約 を生成します:

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

または isnot() を使用します(0.7.9の新機能):

IS NOT演算子を実装します。

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

デモ:

>>> from sqlalchemy.sql import column
>>> column('YourColumn') != None
<sqlalchemy.sql.elements.BinaryExpression object at 0x10c8d8b90>
>>> str(column('YourColumn') != None)
'"YourColumn" IS NOT NULL'
>>> column('YourColumn').isnot(None)
<sqlalchemy.sql.elements.BinaryExpression object at 0x104603850>
>>> str(column('YourColumn').isnot(None))
'"YourColumn" IS NOT NULL'
108
Martijn Pieters

バージョン0.7.9以降では、次のように制約を比較する代わりに、フィルター演算子.isnotを使用できます。

query.filter(User.name.isnot(None))

この方法は、pep8が懸念される場合にのみ必要です。

ソース: sqlalchemyドキュメント

72
Filipe Spindola

他の誰かが疑問に思っている場合は、is_を使用してfoo IS NULLを生成できます。

 >>> from sqlalchemy.sql import column 
 >>> print column( 'foo')。is_(None)
 foo IS NULL 
 >>> print column( 'foo')。isnot(None)
 foo IS NOT NULL 
25
Matthew Moisen