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
廣告
© . All rights reserved.