python - Peewee:获取给定字符串以()字段内容开头的记录
问题描述
我在 peewee 中写了一个包含这个 where 子句的语句:
.where(some_string.startswith(Record.text_field))
这表情提高了TypeError: startswith first arg must be str or a tuple of str, not CharField
。some_string
只是一个普通字符串,因此startswith
是标准库中的方法,而不是 peewee 提供的方法。
所以很清楚,为什么会发生这种情况,但是写这个表达式的正确方法是什么?
解决方案
你要么把事情搞得非常落后,要么不明白 Peewee 是如何工作的。如果您有一个字符串(“some_string”),您如何期望 Python 解释器对存储在 db 列中的值执行startswith 测试?
正确的方法是使用Record.text_field.startswith(some_string)
which 转化为
WHERE "record"."text_field" LIKE 'value in some string%'
推荐阅读
- reactjs - 直接在 redux 状态下存储 TextInput 值得到一个通知“Native TextInput(str) is N events ahead of JS”
- flutter - 在 m1 macbook pro 上找不到颤振 android SDK 位置
- python - 如何跨 celery 任务共享 redis 连接池?
- c++ - 无法使用 gcc 在 Linux 中编译任何 c++ 程序,出现一些奇怪的错误
- python - 比较季度数据:在 Python(Pandas)中迭代以比较来自作为数据框导入的四个不同 excel 文件的多列
- google-chrome-devtools - 调试 HTTP 请求时,Chrome 浏览器开发工具中的“常规”是什么意思?
- aws-lambda - 执行错误 - 模块 'lambda_function' 上缺少处理程序 'lambda_handler'"
- wordpress - Wordpress 重写规则 - 无法获得所需的确切结构
- arrays - 如何用 Tcl 脚本计算每列的平均值
- python - 当我所做的只是遍历列表的长度时,为什么会出现索引超出范围错误?