Peewee – SQL函数

Peewee – SQL函数

美国国家标准协会(ANSI)结构化查询语言(SQL)标准定义了许多SQL函数。

像以下这样的聚合函数在Peewee中很有用。

  • AVG() – 返回平均值。

  • COUNT() – 返回行的数量。

  • FIRST() – 返回第一个值。

  • LAST() – 返回最后一个值。

  • MAX() – 返回最大的值。

  • MIN() – 返回最小的值。

  • SUM() – 返回总和。

为了实现这些SQL函数,Peewee有一个SQL辅助函数fn()。在上面的例子中,我们用它来查找每个城市的记录数。

下面的例子建立了一个采用SUM()函数的SELECT查询。

使用前面定义的模型中的账单和物品表,我们将显示在账单表中输入的每个物品的数量之和。

Item table

带有数据的项目表如下所示

ID 项目名称 价格
1 笔记本电脑 25000
2 打印机 12000
3 路由器 4000

Bill table

账单表如下 –

Id 项目_ID 品牌_ID 数量
1 1 3 5
2 2 2 2
3 3 4 5
4 2 2 6
5 3 4 3
6 1 3 1

例子

我们在帐单和项目表之间建立一个连接,从项目表中选择项目名称,从帐单表中选择数量之和。

from peewee import *
db = SqliteDatabase('mydatabase.db')

class BaseModel(Model):
   class Meta:
      database = db

class Item(BaseModel):
   itemname = TextField()
   price = IntegerField()

class Brand(BaseModel):
   brandname = TextField()
   item = ForeignKeyField(Item, backref='brands')

class Bill(BaseModel):
   item = ForeignKeyField(Item, backref='bills')
   brand = ForeignKeyField(Brand,      backref='bills')
   qty = DecimalField()

db.create_tables([Item, Brand, Bill])

qs=Bill.select(Item.itemname, fn.SUM(Bill.qty).alias('Sum'))
   .join(Item).group_by(Item.itemname)
print (qs)
for q in qs:
   print ("Item: {} sum: {}".format(q.item.itemname, q.Sum))

db.close()

上述脚本执行以下SELECT查询 –

SELECT "t1"."itemname", SUM("t2"."qty") AS "Sum" FROM "bill" AS "t2" 
INNER JOIN "item" AS "t1" ON ("t2"."item_id" = "t1"."id") GROUP BY "t1"."itemname"

输出

据此,输出结果如下−

Item: Laptop sum: 6
Item: Printer sum: 8
Item: Router sum: 8

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程