【peewee】Python使用peewee时where中不同类型比较的问题
问题
以学生表为例,TableStudents表中age字段是TextField类型,想要筛选出18岁以上的学生
TableStudents.select().where(TableStudents.age > 18)
(问题1)会因为TableStudents.age与18类型不同无法得到正确的结果
查阅SQLite文档发现abs()方法可以从TextField得到对应的数再进行比较
SELECT * FROM TableStudents WHERE abs(age) > 18
于是在代码中加上abs
TableStudents.select().where(abs(TableStudents.age) > 18)
(问题2)运行后报错:
TypeError: bad operand type for abs(): 'TextField'
原因是abs()默认是Python自带的方法,不支持这样的转换
解决
正确调用peewee的abs方法
from peewee import fn
TableStudents.select().where(fn.abs(TableStudents.age) > 18)
解决问题
作者:盛夏光年ltk
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主是利用学习、参考、实践、复制和粘贴等多种方式打造成自己的文章,如有帮助记得点赞!

浙公网安备 33010602011771号