如何通过Python调用Shopify API动态拉取昨日/当日订单数据
实现方案
1. 修正API请求参数
你当前使用的created_at参数不符合Shopify Admin API的筛选规则,需替换为时间范围参数created_at_min、created_at_max来按日拉取订单,同时注意原代码里大小写不统一的问题(定义小写url却调用大写URL会报错)。
2. 按日拉取订单代码示例
from datetime import datetime, timedelta import requests # 配置参数(替换为你自己的实际配置) API = "你的API密钥" Password = "你的API密码" StoreName = "你的店铺地址" last = 0 # 保留原有since_id分页逻辑 # -------------------------- # 场景1:拉取昨日订单 # -------------------------- target_date = datetime.today() - timedelta(days=1) # 场景2:拉取当日订单,就把上一行替换为 target_date = datetime.today() # -------------------------- created_at_min = target_date.strftime('%Y-%m-%dT00:00:00') created_at_max = target_date.strftime('%Y-%m-%dT23:59:59') # 拼接请求URL url = f"https://{API}:{Password}@{StoreName}/admin/api/2021-10/orders.json?created_at_min={created_at_min}&created_at_max={created_at_max}&limit=250&status=any&since_id={last}" response = requests.get(url) order_data = response.json()['orders']
注意:需确保脚本使用的时区和Shopify店铺的时区保持一致,避免出现日期偏移拉错数据的问题。如果单日订单量超过250条,循环更新
last为返回结果的最大订单ID,继续拉取直到返回空列表即可。
3. 追加数据到主订单列表
- 写入Excel文件(用pandas实现去重追加):
import pandas as pd # 新拉取的订单转DataFrame new_df = pd.DataFrame(order_data) # 读取原有主订单表 old_df = pd.read_excel("主订单列表.xlsx") # 按订单ID去重后保存 final_df = pd.concat([old_df, new_df]).drop_duplicates(subset="id", keep="last") final_df.to_excel("主订单列表.xlsx", index=False)
- 写入SQL表:
先在SQL表中给订单ID字段设置唯一键,再调用pandas的to_sql方法,配置if_exists="append"即可自动跳过重复数据。
4. 任务调度配置
- Windows系统:直接使用系统自带的「任务计划程序」,设置每日固定时间(比如拉昨日订单就设为每日凌晨1点)执行脚本即可。
- Linux系统:使用crontab配置定时任务即可。
内容的提问来源于stack exchange,提问作者Andrew Boettcher
相关产品推荐
相关产品推荐

