sqlalchemy - это не NULL select
Как я могу добавить фильтр, как в SQL, чтобы выбрать значения, которые не являются NULL из определенного столбца ?
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Как я могу сделать то же самое с фильтрами SQLAlchemy?
select = select(table).select_from(table).where(all_filters)
3 ответа:
column_obj != None
будет производитьIS NOT NULL
ограничения:в контексте столбца создает предложение
a != b
. Если цельNone
производитIS NOT NULL
.или использовать
isnot()
(новый в 0.7.9):реализовать
IS NOT
оператора.как правило,
IS NOT
генерируется автоматически при сравнении со значениемNone
, который решает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'
начиная с версии 0.7.9 вы можете использовать оператор фильтра
.isnot
вместо сравнения ограничений, как это:
query.filter(User.name.isnot(None))
этот метод необходим только в том случае, если pep8 является проблемой.
источник: документация по sqlalchemy