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查询?的详细内容,更多请关注其它相关文章!