首页 > 解决方案 > Peewee:获取给定字符串以()字段内容开头的记录

问题描述

我在 peewee 中写了一个包含这个 where 子句的语句:

.where(some_string.startswith(Record.text_field))

这表情提高了TypeError: startswith first arg must be str or a tuple of str, not CharFieldsome_string只是一个普通字符串,因此startswith是标准库中的方法,而不是 peewee 提供的方法。

所以很清楚,为什么会发生这种情况,但是写这个表达式的正确方法是什么?

标签: pythonpeewee

解决方案


你要么把事情搞得非常落后,要么不明白 Peewee 是如何工作的。如果您有一个字符串(“some_string”),您如何期望 Python 解释器对存储在 db 列中的值执行startswith 测试?

正确的方法是使用Record.text_field.startswith(some_string)which 转化为

WHERE "record"."text_field" LIKE 'value in some string%'

推荐阅读