[ PROMPT_NODE_28094 ]
N8n Code Python 数据访问
[ SKILL_DOCUMENTATION ]
# 数据访问模式 - Python 代码节点
在 n8n 代码节点中使用 Python 访问数据的完整指南。
---
## 概览
在 n8n Python 代码节点中,您可以使用**下划线前缀**变量来访问数据:`_input`、`_json`、`_node`。
**数据访问优先级**(按常用程度):
1. **`_input.all()`** - 最常用 - 批处理、聚合操作
2. **`_input.first()`** - 非常常用 - 单项操作
3. **`_input.item`** - 常用 - 仅限“每个项目”模式
4. **`_node["NodeName"]["json"]`** - 特定节点引用
5. **`_json`** - 直接访问当前项(建议改用 `_input`)
**Python 与 JavaScript 对比**:
| JavaScript | Python (Beta) | Python (Native) |
|------------|---------------|-----------------|
| `$input.all()` | `_input.all()` | `_items` |
| `$input.first()` | `_input.first()` | `_items[0]` |
| `$input.item` | `_input.item` | `_item` |
| `$json` | `_json` | `_item["json"]` |
| `$node["Name"]` | `_node["Name"]` | 不可用 |
---
## 模式 1: _input.all() - 处理所有项目
**用法**:批处理中最常用的模式
**适用场景:**
- 处理多个记录
- 数据聚合(求和、计数、平均值)
- 过滤列表
- 转换数据集
### 基本用法
python
# 从上一个节点获取所有项目
all_items = _input.all()
# all_items 是一个字典列表,例如:
# [
# {"json": {"id": 1, "name": "Alice"}},
# {"json": {"id": 2, "name": "Bob"}}
# ]
print(f"已接收 {len(all_items)} 个项目")
return all_items
### 示例 1: 过滤活跃项目
python
all_items = _input.all()
# 仅过滤活跃项目
active_items = [
item for item in all_items
if item["json"].get("status") == "active"
]
return active_items
### 示例 2: 转换所有项目
python
all_items = _input.all()
# 转换为新结构
transformed = []
for item in all_items:
transformed.append({
"json": {
"id": item["json"].get("id"),
"full_name": f"{item['json'].get('first_name', '')} {item['json'].get('last_name', '')}",
"email": item["json"].get("email"),
"processed_at": datetime.now().isoformat()
}
})
return transformed
### 示例 3: 数据聚合
python
all_items = _input.all()
# 计算总计
total = sum(item["json"].get("amount", 0) for item in all_items)
return [{
"json": {
"total": total,
"count": len(all_items),
"average": total / len(all_items) if all_items else 0
}
}]
### 示例 4: 排序