2017-04-23 75 views
2

我已经创建了一个私人Shopify应用程序。它可以通过产品ID获取几乎所有的信息。但是我需要一个选项来获取API商店中所有产品的产品ID。我试过下面的选项如何从Shopify Python API获取所有产品ID

shopify.Product.find() 

但它只显示前50个产品。但我的商店有超过2.4k的产品。

回答

7

Shopify返回资源列表的分页响应。每页的默认资源数量为50,默认页面为1。您的要求就是这样等同于以下:

shopify.Product.find(limit=50, page=1) 

Shopify使您可以增加每页250极限下面是我用它来获取所有给定资源的一个辅助功能:

def get_all_resources(resource, **kwargs): 
    resource_count = resource.count(**kwargs) 
    resources = [] 
    if resource_count > 0: 
     for page in range(1, ((resource_count-1) // 250) + 2): 
      kwargs.update({"limit" : 250, "page" : page}) 
      resources.extend(resource.find(**kwargs)) 
    return resources 

你像这样使用它:

products = get_all_resources(shopify.Product) 

你甚至可以传入参数。你的问题问专供产品ID-如果你限制查询只返回的ID,这将是非常非常快(因为它没有任何的产品变的拉):

product_ids = get_all_resources(shopify.Product, fields="id") 

请注意,如果您有2.4k产品,则可能需要一些时间!

文档: https://help.shopify.com/api/reference/product

+0

非常感谢您的解决方案。虽然我可以在发布问题后解决它。但我喜欢你的解决方案。 :) –

+1

谢谢Rafayet,也许这会帮助别人:) – Julien