kuroの覚え書き

96の個人的覚え書き

複数ワードあったらor検索をかける

現在の検索式では

exome = exome.filter(Exome.SampleName_phenotype.like(form.name.data))

こういうふうに検索ワード1個の入力に対して処理をしているが、2個だったら

exome = exome.filter(Exome.SampleName_phenotype.like(form.name1.data) and Exome.SampleName_phenotype.like(form.name2.data))

で良さそうだ。しかし何個あるかわからなくて、かつ1つの検索フィールドに複数キーワードが入っている場合、forループで取り出して文字列操作をしてから検索に投げる必要があるだろう。

import re
names = ''
for samp_name in re.split('[, ]', form.name.data):
    names += 'Exome.SampleName_phenotype.like('+ samp_name +') and '
names = names[:-5]
exome = exome.filter(names)

これでいけるんじゃないかな



・・・うまくいかない。何故?

https://stackoverflow.com/questions/7942547/using-or-in-sqlalchemy
参照