airtable.py
Python 开发者调用 Airtable REST API 的轻量级工具库,一行代码完成数据增删改
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Python 开发者调用 Airtable REST API 的轻量级工具库,一行代码完成数据增删改
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你正在管理一个电商项目:Airtable 里记录着库存、订单、客户信息,团队成员通过 Web 界面实时协作。然而,某天你接到一个需求——每天凌晨自动同步一次库存数据、给库存不足的商品发送告警、并生成一份 Excel 报表。
这种场景下,你当然不可能每天手动操作 Airtable 网站。怎么办?
Airtable.py 就是来解决这个问题的。它是一个纯 Python 库,让你可以在任何 Python 环境中(哪怕是一台 Linux 服务器上的定时任务)直接操控 Airtable 的数据——增删改查,全部通过代码完成。对于习惯了用代码解决问题的工程师来说,它比 Zapier、Make 这类图形化自动化工具更灵活、更可控。
Airtable.py 由 pcorpet(GitHub: pcorpet)开发和维护,代码采用 MIT 许可证开源,当前 GitHub 收获约 281 颗星。
这个项目诞生于一个很朴素的需求:Airtable 官方只提供了 JavaScript 版本的 SDK(airtable.js),但 Python 开发者也需要同样的能力。 项目作者 Pascal Corpet 联合了 Joseph Best-James 和 Nicolo Canali De Rossi,共同构建了这个 Python 封装层,让 Python 开发者无需直接手写 HTTP 请求,就能操作 Airtable 的 REST API。
值得注意的是,这个项目虽然代码量不大(核心仅一个 airtable/__init__.py 文件,约 10KB),但维护历史很长——支持 Python 2.7 一直到 Python 3.9,兼容性和稳定性都经过了时间检验。
只需要一行 pip 命令即可完成安装:
pip install airtable
初始化连接也极为简洁,只需要两个参数:Base ID 和 API Key:
import airtable
at = airtable.Airtable('BASE_ID', 'ACCESS_TOKEN')
其中 BASE_ID 是 Airtable 中你的 Base 的唯一标识(形如 appA0CDAE34F),ACCESS_TOKEN 是你的个人 API 密钥。这两个信息都可以在 Airtable 官网的账户设置和 Base 配置页面中获取。
Airtable.py 的 API 设计遵循 Airtable 官方 REST API 的命名约定,学习成本极低:
at.get(table_name) — 获取表格中的所有记录(自动处理分页)at.get(table_name, record_id) — 获取单条指定记录at.create(table_name, data) — 创建新记录,data 是一个字典at.update(table_name, record_id, data) — 部分更新(只更新指定字段)at.update_all(table_name, record_id, data) — 全量替换记录at.delete(table_name, record_id) — 删除指定记录返回的数据格式直接就是 Python 的字典(OrderedDict),开发者可以用熟悉的 record['fields']['列名'] 方式读取任意字段,无需任何数据转换。
get() 方法支持 Airtable REST API 的全部查询参数,包括:
limit=100 — 限制返回记录数量offset — 分页偏移filter_by_formula — 使用 Airtable 公式语言过滤数据view — 指定视图(只返回该视图可见的记录)max_records — 最大记录数上限fields — 指定只返回哪些字段sort — 指定排序规则这意味着你可以在 Python 中实现比 Airtable Web 界面更复杂的查询逻辑,比如过滤、多字段排序、只取特定列等。
iterate(table_name) 方法是一个生成器(generator),它自动处理 Airtable API 的分页机制。只需一行代码即可遍历一个大表中的所有记录:
for record in at.iterate('Products'):
print(record['fields']['Name'])
无需手动处理 offset 循环,Airtable.py 在内部帮你完成了这一切。对于需要处理数千条记录的数据导出或迁移任务,这个功能非常实用。
Airtable.py 的代码结构极其精简。整个项目的核心代码集中在 airtable/__init__.py 一个文件中(约 10KB),除了类型标注文件 airtable/__init__.pyi 和标记文件 py.typed(用于 PEP 561 类型标注支持)外,没有任何多余的模块拆分。
这种单文件设计有几个显著优势:
requests(HTTP 调用)和 six(Python 2/3 兼容),安装体积小到可以忽略不计。__request() 方法是整个库的枢纽,负责所有 HTTP 请求的发送。它使用 Python 标准 requests 库,支持 GET/POST/PUT/PATCH/DELETE 五种 HTTP 方法,自动处理 JSON 序列化与反序列化,并在响应非 200 时抛出语义化的 AirtableError 异常,包含错误类型(如 TABLE_NOT_FOUND)和错误消息。
项目包含完整的类型标注文件 airtable/__init__.pyi,配合 py.typed 标记文件,使该库与 mypy、PyCharm 等静态类型检查工具完全兼容。这在中小型库中属于加分项,能显著提升开发者的 IDE 体验。
setup.cfg 显示该库支持从 Python 2.7 到 Python 3.9 的所有主流版本,并同时支持 CPython 和 PyPy 实现。虽然 Python 2 已于 2020 年停止维护,但这种广泛的兼容性确保了该库可以在各种遗留系统中使用。
requests 调用附件 URL 获取。airtable 包),功能更完整。Airtable.py 是一个社区维护的非官方封装,在某些边缘场景可能与官方 API 不一致。Airtable.py 是一个定位清晰、设计优雅的 Python 工具库。它的目标不是成为"大而全"的 SDK,而是专注于一件事:让 Python 开发者以最少的代码,通过 Airtable REST API 完成对表格数据的增删改查操作。
如果你正在寻找一种将 Airtable 数据集成到 Python 工作流中的方式,Airtable.py 是一个值得考虑的轻量级选择。只需几分钟,你就可以写出一个从 Airtable 自动导出数据到本地文件的脚本。相比自己手写 requests 调用,Airtable.py 替你处理了认证头、错误处理、分页遍历等所有细节,将原本可能需要 50 行代码才能完成的操作压缩到 5 行以内。

图1:项目作者 pcorpet 的 GitHub 头像