如何检查(计数)是返回数据?

时间:2018-02-15 16:50:58

标签: python peewee flask-peewee

我在Peewee得到了这个查询:

return c = Products.get(Products.sku == article).get()

如何检查它是否返回数据?

我试过了:

if c.count() > 0:

if len(c) > 0

它对我不起作用

这是完整的代码:

try:
    r = self.isProductExist(row['sku'])

    ## if (r.count() == 0):

except peewee.DoesNotExist:

   # Insert product


    def isProductExist(self, article):
      return Products.get(Products.sku == article).get()

2 个答案:

答案 0 :(得分:0)

你的代码有各种各样的错误。

首先,这里不需要第二次调用“get()”:

return c = Products.get(Products.sku == article).get()

其次,你正在返回一个没有意义的作业(?)。改为:

 return Products.get(Products.sku == article)

如果产品存在,则会退回。如果没有,将引发DoesNotExist异常,从而无需在任何地方调用“count()”。

即使找不到产品,也要使代码正常工作:

try:
    return Products.get(Products.sku == article)
except Products.DoesNotExist:
    # Product was not found.
    return

答案 1 :(得分:-1)

您可以使用count()

这是一个有效的代码:

import peewee
from peewee import *

db = SqliteDatabase('/tmp/a.db')

class Products(Model):
    sku = CharField()
    class Meta:
        database = db

db.connect()
db.drop_tables(models=[Products], safe=True)
db.create_tables([Products])


count = Products.select().count()
print(count) #=> 0
if not count:
    Products.create(sku="abc")

print(Products.select().count()) #=> 1

print(peewee.__version__) #=> 3.0.18