You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用notion-py(Notion API)填充数据库multi-select多选类型列的方法

问题原因

你遇到的Not allowed to edit column: schema报错,是因为你当前使用的token_v2对应的Notion账号没有编辑该数据库结构的权限。你使用的add_new_multi_select_value方法本质是修改数据库的schema来新增标签选项,自然会被权限规则拦截。

另外你之前的思路有偏差:给multi-select列填充数据不需要修改数据库schema,只有新增标签选项的时候才需要改schema。

解决方法

方案一:提前预定义标签(推荐)

这种方案不需要修改数据库schema,不会触发权限问题,稳定性最高:

  1. 提前打开你的Notion数据库,手动在Теги列的multi-select配置里把所有会用到的标签选项都加好
  2. 确认Теги列对应的Python字段名:创建行后加一行代码打印print(row.get_all_properties()),从输出的字典里找到名称为“Теги”对应的键名,比如大概率是tegi或者tags

修正后的写入代码如下:

def make_notion_row():
    collection_view = client.get_collection_view(list_url[temporary_category])
    row = collection_view.collection.add_row() # 创建新行
    row.ssylka = temporary_link # 填充链接字段
    row.nazvanie_zametki = temporary_name # 填充名称字段
    if temporary_category == 0:
        row.stil = temporary_subcategory # 填充子分类字段
        # 分割标签并去掉前后空格
        tags = [tag.strip() for tag in temporary_tag.split(',')]
        # 直接给multi-select字段赋值标签列表即可,这里把tegi替换为你实际查到的字段名
        row.tegi = tags
    else:
        row.kategoria = temporary_subcategory

方案二:需要动态新增标签

如果你确实需要运行时动态添加新的标签选项,需要先做两个操作:

  1. 打开Notion数据库的共享设置,给你token_v2对应的账号授予「编辑」权限(注意不是只读权限)
  2. 修正add_new_multi_select_value方法里的变量错误:你方法里最后一行的collection没有定义,要替换为collection_view.collection

另外注意notion-py已经停止维护多年,对Notion新的接口兼容性很差,如果动态新增标签还是报错,建议换成Notion官方提供的Python SDK,使用内部集成token来调用接口,权限配置更清晰。

内容的提问来源于stack exchange,提问作者makemono_zeroke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:57:03