Peewee – 用户自定义运算符
Peewee有一个 表达式 类,通过该类我们可以在Peewee的运算符列表中添加任何自定义的运算符。表达式的构造函数需要三个参数,左操作数、操作数和右操作数。
op=Expression(left, operator, right)
使用表达式类,我们定义了一个 mod() 函数,它接受左和右的参数以及’%’作为操作符。
from peewee import Expression # the building block for expressions
def mod(lhs, rhs):
return Expression(lhs, '%', rhs)
例子
我们可以在SELECT查询中使用它来获取联系人表中具有偶数ID的记录列表。
from peewee import *
db = SqliteDatabase('mydatabase.db')
class BaseModel(Model):
class Meta:
database = db
class Contacts(BaseModel):
RollNo = IntegerField()
Name = TextField()
City = TextField()
db.create_tables([Contacts])
from peewee import Expression # the building block for expressions
def mod(lhs, rhs):
return Expression(lhs,'%', rhs)
qry=Contacts.select().where (mod(Contacts.id,2)==0)
print (qry.sql())
for q in qry:
print (q.id, q.Name, q.City)
这段代码将发出以下由字符串代表的SQL查询 –
('SELECT "t1"."id", "t1"."RollNo", "t1"."Name", "t1"."City" FROM "contacts" AS "t1" WHERE (("t1"."id" % ?) = ?)', [2, 0])
输出
因此,输出情况如下 −
2 Amar Delhi
4 Leena Nasik
6 Hema Nagpur
8 John Delhi
10 Raja Nasik