Mysql
 sql >> база данни >  >> RDS >> Mysql

SQLAlchemy нечувствителна заявка за търсене, базирана на IN?

Това трябва да се компилира точно...

query( models.Object )\
.filter( 
     sqlalchemy.func.upper( models.Object.fieldname )\
     .in_( (sqlalchemy.func.upper(foo) , sqlalchemy.func.upper(bar), ) )
)\
.all()
  1. можете също да предадете текст с главни букви. лично аз бих направил in_( foo.uppercase() , bar.uppercase() )

  2. SqlAlchemy работи с DBAPI, за да предаде параметри на свързване във вашето архивно хранилище за данни. Превод – стойностите се екранират автоматично.

ако искате да направите списък с низове, нещо подобно трябва да работи

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

Просто искам да добавя, че ако искате да оптимизирате тези селекти за скорост и сте на Postgres или Oracle, можете да създадете „функционален индекс“

CREATE INDEX table_fieldname_lower_idx ON table(lower(fieldname))

планирането на заявки (в базата данни) ще знае да използва това lower(fieldname) индекс при търсене срещу lower(fieldname) заявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в MySQL 1264:стойност извън диапазона за колона

  2. Symfony2:Избройте градовете по държави

  3. CakePHP - Ефективно търсене в 3 таблици с помощта на JOIN

  4. Как да получите данни за всеки час в MySQL

  5. MySql localhost срещу екземпляр на Amazon RDS