Notion API × Python
1. 시작
2. 설정
2-1. Integration 생성
먼저 Integration을 만듭니다.이 절차에 관하여 아래의 글에서 상세하게 소개하였다
이번에 "Test API"라는 Integration을 만들었어요.
제가 Integration의 Token을 컨트롤하겠습니다.
환경 변수 NOTION - Python에서 Integration 사용 가능Integration의 Token을 TOKIO 멤버로 합니다.bash_프로필 등에 기재하다
export NOTION_TOKEN="Integration Token"
2-2. Notion 페이지 만들기
데이터베이스로 Notion 페이지 만들기
이번에는 다음 그림의 채소 데이터베이스 페이지를 만들었습니다.
각 열의 구성은 다음과 같다.
생성된 데이터베이스에 Integration API 액세스
Share 버튼을 누릅니다.
Invite 버튼을 누릅니다.
Invite Invite Integration“Test API”
2-3. Notion SDK for Python 설치
Python용 SDK를 설치합니다.픽으로 장착.
pip install notion-client
3. 데이터베이스 읽기
import os
from pprint import pprint
from notion_client import Client
notion = Client(auth=os.environ['NOTION_TOKEN'])
notion.databases.query(
**{
'database_id' : '' # データベースID
}
)
db = notion.databases.query(
**{
'database_id' : 'c8e925b380314faa8f3ed6b6f08c030e' # データベースID
}
)
pprint(db)
{'has_more': False,
'next_cursor': None,
'object': 'list',
'results': [{'archived': False,
'created_time': '2021-06-18T02:38:06.679Z',
'id': '2a6be367-6063-432c-8397-14415a63f083',
'last_edited_time': '2021-06-18T02:41:00.000Z',
'object': 'page',
'parent': {'database_id': 'c8e925b3-8031-4faa-8f3e-d6b6f08c030e',
'type': 'database_id'},
'properties': {'Name': {'id': 'title',
'title': [{'annotations': {'bold': False,
'code': False,
'color': 'default',
'italic': False,
'strikethrough': False,
'underline': False},
'href': None,
'plain_text': 'トマト',
'text': {'content': 'トマト',
'link': None},
'type': 'text'}],
'type': 'title'},
'個数': {'id': 't_nx',
'number': 3,
'type': 'number'}}},
{'archived': False,
'created_time': '2021-06-18T02:38:06.679Z',
'id': 'b2355c50-8823-4a6a-ae02-0fa647a78014',
'last_edited_time': '2021-06-18T02:41:00.000Z',
'object': 'page',
'parent': {'database_id': 'c8e925b3-8031-4faa-8f3e-d6b6f08c030e',
'type': 'database_id'},
'properties': {'Name': {'id': 'title',
'title': [{'annotations': {'bold': False,
'code': False,
'color': 'default',
'italic': False,
'strikethrough': False,
'underline': False},
'href': None,
'plain_text': 'にんじん',
'text': {'content': 'にんじん',
'link': None},
'type': 'text'}],
'type': 'title'},
'個数': {'id': 't_nx',
'number': 2,
'type': 'number'}}},
{'archived': False,
'created_time': '2021-06-18T02:38:06.679Z',
'id': '16896051-1be9-4a33-a7e9-1ca21950c1cc',
'last_edited_time': '2021-06-18T02:41:00.000Z',
'object': 'page',
'parent': {'database_id': 'c8e925b3-8031-4faa-8f3e-d6b6f08c030e',
'type': 'database_id'},
'properties': {'Name': {'id': 'title',
'title': [{'annotations': {'bold': False,
'code': False,
'color': 'default',
'italic': False,
'strikethrough': False,
'underline': False},
'href': None,
'plain_text': 'じゃがいも',
'text': {'content': 'じゃがいも',
'link': None},
'type': 'text'}],
'type': 'title'},
'個数': {'id': 't_nx',
'number': 1,
'type': 'number'}}}]}
for idx in range(len(db['results'])):
name = db['results'][idx]['properties']['Name']['title'][0]['text']['content']
quantity = db['results'][idx]['properties']['個数']['number']
print('{} : 個数 {}'.format(name, quantity))
トマト : 個数 3
にんじん : 個数 2
じゃがいも : 個数 1
4. 데이터베이스 쓰기
이어서 데이터베이스에 써 보았다.
읽을 때와 마찬가지로 다음 코드에서 지정한 대상의 데이터베이스 ID를 쓸 수 있습니다
notion.pages.create(
**{
'parent': {'database_id': ''}, # データベースID
'properties': {} # ここにカラム名と値を記載
}
)
'열명과 수치기재'의 부분은 이해하기 어려우니 다음에 구체적인 예를 들자.여기에 채소 데이터베이스에 다음과 같은 두 가지 기록을 추가한 예가 열거되어 있다.
# 追加する野菜と個数の辞書を作成
append_dict = {'きゅうり' : 4, 'なす' : 5}
# 1レコードずつデータベースにInsertする
for vegetable,amount in append_dict.items():
notion.pages.create(
**{
'parent': { 'database_id': 'c8e925b380314faa8f3ed6b6f08c030e'},
'properties': {
'Name': {
'title': [
{
'text': {
'content': vegetable # 野菜名を指定
}
}
]
},
'個数': {
'number' : amount # 個数を指定
}
}
}
)
데이터베이스에서 볼 수 있듯이 두 개의 기록이 순조롭게 추가되었다.5. 끝말
이번에는 파이톤과 노티온 API를 이용한 데이터베이스 읽기와 쓰기 방법에 대해 정리했다.
이 기사에서 소개한 코딩을 기반으로 하면 노션의 효율적 활용 폭이 한꺼번에 확대될 것으로 생각한다.
예를 들어 아래의 글은 파이톤과 노션 API를 이용하여 주택 관리를 반자동화하는 방법을 총괄하였으며, 가능하다면 참고하시기 바랍니다.
Reference
이 문제에 관하여(Notion API × Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ysksatoo/articles/66fd26893a6cdd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)