Peewee - 用户定义操作符



Peewee 中的 Expression 类,借助此类,我们可以将任何自定义操作符添加到 Peewee 的操作符列表中。Expression 的构造函数需要三个参数,左操作数、操作符和右操作数。

op=Expression(left, operator, right)

使用 Expression 类,我们定义了一个 mod() 函数,该函数接受左和右参数以及 “%” 作为操作符。

from peewee import Expression # the building block for expressions

def mod(lhs, rhs):
   return Expression(lhs, '%', rhs)

示例

我们可以在 SELECT 查询中使用它来获取 Contacts 表中具有偶数 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
广告