Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLAlchemy insensível a maiúsculas e minúsculas em consulta de pesquisa baseada em?


Isso deve compilar exatamente ...
query( models.Object )\
.filter( 
     sqlalchemy.func.upper( models.Object.fieldname )\
     .in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()

  1. você também pode simplesmente passar o texto em maiúsculas. pessoalmente, eu faria in_( foo.uppercase() , bar.uppercase() )

  2. SqlAlchemy trabalha com o DBAPI para passar parâmetros de ligação para seu armazenamento de dados de back-end. Tradução -- os valores são escapados automaticamente.

se você quiser fazer uma lista de strings, algo assim deve funcionar
.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )

Só quero acrescentar que se você quiser otimizar esses selects para velocidade, e estiver no Postgres ou Oracle, você pode criar um 'índice de função'
CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))

o planejador de consulta (no banco de dados) saberá usar esse lower(fieldname) index ao pesquisar em um lower(fieldname) consulta.