2017-04-23 210 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