缺少Peewee RawQuery中的get()

时间:2016-08-30 16:24:12

标签: python peewee

我有一个创建wherewords变量的函数,然后用Peewee执行原始查询。

我希望这可行:

Project.raw('select count(id) as np from project where' + where, *words).get().np

但是当我尝试它时,我得到了这个错误:

AttributeError: 'RawQuery' object has no attribute 'get'

相反,我需要遍历那一个元素,创建一个列表并获取它的第一个项目以使其工作:

list(Project.raw('select count(id) as np from project where' + where, *words))[0].np

get()

中是否遗漏了RawQuery()的原因?

是否有更简洁的方法来获取原始查询的结果?

修改

这是一个穷人文字搜索:我正在查找字段namenumber中按字母顺序输入的所有字词。

当用户在文本输入字段上键入时,会生成Ajax调用。调用发送text被输入,服务器返回第一个MAX_RESULTS项和可用项的总数。

以下是使用hack的代码:

words = ['%%%s%%' % i for i in text]
where = ' and '.join(['(name like ? or number like ?)'] * len(words))
words = [w for l in zip(words, words) for w in l]
n_results = list(DbProject.raw('select count(number) as count from dbproject where' + where, *words))[0].count
projects = DbProject.raw('select * from dbproject where' + where + ' order by number desc limit ' + str(MAX_RESULTS), *words)

我知道有更好的方法可以text search with SQLite,但是这个项目中的文本搜索具有如此小的重要性,我决定尽可能少花时间。尽管如此,我还是不喜欢它,我决定问。

0 个答案:

没有答案