1

我在 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()
4

2 回答 2

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
于 2018-02-27T17:59:08.570 回答
-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
于 2018-02-26T19:14:53.307 回答