Orator中如何实现多条件LIKE查询?

orator中如何实现多条件like查询?

orator中的多条件like查询

orator是python的一个轻量级数据库对象关系映射(orm)框架。在原生sql中,可以使用or(或)运算符构造多个like查询条件。本文将探讨如何在orator中编写这样的查询。

原生sql查询

select * from `think_user` where  (`name` like '%think%' or `name` like '%php%')

orator查询

  • 单个关键词查询

使用like方法进行单个条件的like查询非常简单:

db.table('full_text').where('title', 'like', f'%{word}%').get()
  • 多个关键词查询

对于多个关键词的like查询,orator无法使用or_where方法。因此,可以使用以下两种方法:

方法1:使用多次赋值

#实现and逻辑
search = ['%word1%', '%word2%', '%word3%', ...]
info = db.table('full_text')
for s in search:
    info = info.where('title', 'like', s)
result = info.get()

#实现or逻辑
search = ['%word1%', '%word2%', '%word3%', ...]
info = db.table('full_text')
for s in search:
    if search.index(s) == 0:
        info = info.where('title', 'like', s)
    else:
        info = info.or_where('title', 'like', s)
result = info.get()

方法2:使用原生sql

query = "SELECT * FROM `full_text` WHERE  (`title` LIKE '%think%' OR `title` LIKE '%php%')"
result = DB.select(DB.raw(query)).get()

虽然orator缺乏对多条件like查询的直接支持,但使用多次赋值或原生sql仍然可以实现。但是,需要注意的是,这种方法可能会导致重复查询,从而降低查询效率。

以上就是Orator中如何实现多条件LIKE查询?的详细内容,更多请关注其它相关文章!