【peewee】Python使用peewee时where中不同类型比较的问题

2023-03-07,,

问题

以学生表为例,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)

解决问题

【peewee】Python使用peewee时where中不同类型比较的问题的相关教程结束。

《【peewee】Python使用peewee时where中不同类型比较的问题.doc》

下载本文的Word格式文档,以方便收藏与打印。