Criação de consultas sqlalchemy dinâmicas com PostgreSQL

Se você estiver querendo saber se existe ou não um valor de string em uma coluna, certifique-se de tornar a coluna anulável na definição do modelo.

some_str = db.Column(db.String(30), nullable=True)

Dessa forma, você pode consultar da seguinte forma:

if str(column_type)!='SMALLINT' and check in (0,1):
if check==0:
items
= items.filter(func.lower(getattr(self.model, k)).is_(None))
else:
items
= items.filter(func.lower(getattr(self.model, k)).isnot(None))

onde check é um valor booleano, por exemplo, de uma querystring:

?some_str=1

Você não pode usar ! = Como você pode esperar, porque está criando a consulta dinamicamente.