sql >> Databasteknik >  >> RDS >> Mysql

SQLAlchemy skiftlägesokänslig IN-baserad sökfråga?

Detta bör kompilera exakt...

query( models.Object )\
.filter( 
     sqlalchemy.func.upper( models.Object.fieldname )\
     .in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
  1. du kan också bara skicka med versaler. personligen skulle jag göra in_( foo.uppercase() , bar.uppercase() )

  2. SqlAlchemy arbetar med DBAPI för att skicka bindningsparametrar till din backend-datalagring. Översättning -- värden escapes automatiskt.

om du vill göra en lista med strängar bör något sådant här fungera

.in_( [ i.upper() for i in inputs ] )
.in_( [ sqlalchemy.func.upper(i) for i in inputs ] )

Vill bara tillägga att om du vill optimera dessa val för hastighet och är på Postgres eller Oracle kan du skapa ett "funktionsindex"

CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))

frågeplaneraren (i databasen) vet att den lower(fieldname) används index när du söker mot en lower(fieldname) fråga.




  1. Ansluter du till DB från ett Chrome-tillägg?

  2. LAST_INSERT_ID() returnerar alltid 0 (RMySQL) - separat anslutningsproblem

  3. JPA Hibernate Persistence undantag [PersistenceUnit:default] Det går inte att bygga Hibernate SessionFactory

  4. Anpassade grafer för att övervaka dina MySQL-, MariaDB-, MongoDB- och PostgreSQL-system - ClusterControl-tips och tricks