PYQT TUTORIAL
Hướng dẫn sử dụng LangChain bằng Python Cách tự viết Context Manager trong Python Cách background của hình ảnh trong Python Cách làm việc với Notion API trong Python Cách đo Time chạy trong Python Cách sao chép danh sách (List) trong Python Cách kiểm tra List trống trong Python Cách sắp xếp dictionary theo giá trị trong Python PyQt là gì? Tạo một chương trình "Hello World". Tín hiệu và Khe (Signals & Slots) trong PyQt Cách sử dụng widget PyQt QLabel Cách sử dụng widget QPushButton của PyQt Cách sử dụng widget QLineEdit trong PyQt Cách sử dụng QVBoxLayout trong PyQt Cách sử dụng QGridLayout trong PyQt Cách sử dụng QFormLayout trong PyQt Cách sử dụng lớp QCheckBox trong PyQt Cách sử dụng lớp PyQt QRadioButton Sử dụng PyQt QComboBox để tạo Widget Combobox Cách sử dụng widget PyQt QSpinBox để tạo một spin box Cách tạo một widget nhập ngày sử dụng lớp PyQt QDateEdit Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit Cách tạo một widget nhập ngày và giờ sử dụng PyQt QDateTimeEdit Cách sử dụng lớp PyQt QSlider để tạo một widget thanh trượt (slider). Cách dùng PyQt QWidget để làm container chứa các widget khác. Cách dùng lớp PyQt QTabWidget để tạo một widget dạng tab Cách dùng lớp PyQt QGroupBox để tạo một khung nhóm với tiêu đề Cách dùng lớp PyQt QTextEdit để tạo một widget cho phép chỉnh sửa Cách sử dụng lớp PyQt QProgressBar để tạo một widget progress bar Cách sử dụng lớp PyQt QMessageBox để tạo một hộp thoại Cách dùng lớp PyQt QInputDialog để tạo một hộp thoại nhập liệu Cách dùng lớp PyQt QFileDialog để tạo hộp thoại chọn file Cách sử dụng lớp QMainWindow của PyQt để tạo cửa sổ Cách sử dụng lớp PyQt QMenu để tạo menu Cách dùng lớp PyQt QToolBar để tạo các widget toolbar Cách dùng lớp QDockWidget của PyQt để tạo một widget Cách dùng lớp QStatusBar trong PyQt để tạo thanh status bar Cách sử dụng lớp QListWidget trong Python Cách sử dụng lớp QTableWidget để tạo một bảng Cách sử dụng lớp QTreeWidget của PyQt Cách sử dụng Qt Designer để thiết kế UX/UI trong PyQt. Cách sử dụng QThread trong PyQt Cách tạo các lớp QThreadPool đa luồng trong PyQt Cách hoạt động của Model/View trong PyQt Cách sử dụng Qt Style Sheets (QSS) trong PyQt. Chuyển đổi PyQt sang EXE trong PyQt
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Cách làm việc với Notion API trong Python

Trong thời đại số hóa, tự động hóa trở thành chìa khóa để tối ưu hóa công việc, và Notion – một nền tảng quản lý công việc linh hoạt – đã cung cấp API mạnh mẽ để người dùng có thể quản lý dữ liệu của mình một cách hiệu quả. Bài viết này sẽ hướng dẫn bạn cách làm việc với Notion API trong Python, giúp bạn tự động hóa các thao tác như tạo, đọc, cập nhật, và xóa dữ liệu trong cơ sở dữ liệu của Notion. Từ việc thiết lập API đến viết các hàm Python để thao tác dữ liệu, bạn sẽ thấy rõ cách Notion API có thể hỗ trợ tối đa cho công việc của mình.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Bài viết này sẽ hướng dẫn cách:

  • Thiết lập API của Notion
  • Thiết lập mã Python
  • Tạo các mục trong cơ sở dữ liệu
  • Truy vấn và đọc dữ liệu từ cơ sở dữ liệu
  • Cập nhật và xóa các mục trong cơ sở dữ liệu

Thiết lập Notion API và cơ sở dữ liệu Python

Đầu tiên, chúng ta cần tạo một cơ sở dữ liệu toàn trang trên bảng Notion của mình. Ví dụ trong bài này sẽ sử dụng một cơ sở dữ liệu lưu trữ các bài đăng blog của mình. Cơ sở dữ liệu sẽ gồm các trường: URL, Title (tiêu đề), và Published (ngày xuất bản) để minh họa cách thao tác với các loại dữ liệu văn bản và ngày.

Tiếp theo, làm theo hướng dẫn chính thức để tạo một tích hợp Notion (Integration). Qua các bước này bạn sẽ:

Bài viết này được đăng tại [free tuts .net]

  • Tạo tích hợp và lấy Token.
  • Chia sẻ cơ sở dữ liệu với tích hợp của bạn.
  • Lưu ID của cơ sở dữ liệu để dùng trong mã Python.

Khi đã hoàn tất thiết lập, bạn sẽ sẵn sàng tự động hóa việc tạo, đọc, cập nhật và xóa dữ liệu trong cơ sở dữ liệu của mình.

Thiết lập mã Python

Để làm việc với API, chúng ta sẽ dùng thư viện requests. Cài đặt thư viện bằng lệnh:

pip install requests

Sau đó, xác định token của bạn, ID của cơ sở dữ liệu, và các headers cần thiết:

import requests

NOTION_TOKEN = "YOUR_INTEGRATION_TOKEN"
DATABASE_ID = "YOUR_DATABASE_ID"

headers = {
    "Authorization": "Bearer " + NOTION_TOKEN,
    "Content-Type": "application/json",
    "Notion-Version": "2022-06-28",
}

Tạo mục trong cơ sở dữ liệu Notion Python

Để tạo một mục mới, ta gửi yêu cầu POST đến API:

def create_page(data: dict):
    create_url = "https://api.notion.com/v1/pages"

    payload = {"parent": {"database_id": DATABASE_ID}, "properties": data}

    res = requests.post(create_url, headers=headers, json=payload)
    return res

Dữ liệu cần tuân theo các định dạng của từng trường trong bảng cơ sở dữ liệu. Ví dụ: với các cột URL, Title, và Published, bạn có thể tạo dữ liệu như sau:

from datetime import datetime, timezone

title = "Tiêu đề mẫu"
description = "Mô tả mẫu"
published_date = datetime.now().astimezone(timezone.utc).isoformat()
data = {
    "URL": {"title": [{"text": {"content": description}}]},
    "Title": {"rich_text": [{"text": {"content": title}}]},
    "Published": {"date": {"start": published_date, "end": None}}
}

create_page(data)

Truy vấn cơ sở dữ liệu và đọc các mục

Để truy vấn và đọc dữ liệu từ cơ sở dữ liệu, bạn có thể dùng hàm sau:

def get_pages(num_pages=None):
    url = f"https://api.notion.com/v1/databases/{DATABASE_ID}/query"
    get_all = num_pages is None
    page_size = 100 if get_all else num_pages

    payload = {"page_size": page_size}
    response = requests.post(url, json=payload, headers=headers)

    data = response.json()
    results = data["results"]

    while data["has_more"] and get_all:
        payload = {"page_size": page_size, "start_cursor": data["next_cursor"]}
        response = requests.post(url, json=payload, headers=headers)
        data = response.json()
        results.extend(data["results"])

    return results

Lấy tất cả các trang và duyệt qua từng mục:

pages = get_pages()

for page in pages:
    page_id = page["id"]
    props = page["properties"]
    url = props["URL"]["title"][0]["text"]["content"]
    title = props["Title"]["rich_text"][0]["text"]["content"]
    published = props["Published"]["date"]["start"]

Cập nhật mục trong cơ sở dữ liệu Notion

Để cập nhật một mục, chúng ta gửi yêu cầu PATCH:

def update_page(page_id: str, data: dict):
    url = f"https://api.notion.com/v1/pages/{page_id}"
    payload = {"properties": data}
    res = requests.patch(url, json=payload, headers=headers)
    return res

Ví dụ, cập nhật trường Published:

page_id = "ID của trang"
new_date = datetime(2023, 1, 15).astimezone(timezone.utc).isoformat()
update_data = {"Published": {"date": {"start": new_date, "end": None}}}
update_page(page_id, update_data)

Xóa mục trong cơ sở dữ liệu Notion

Để xóa một mục, bạn sử dụng lại endpoint cho việc cập nhật nhưng đặt archived thành True:

def delete_page(page_id: str):
    url = f"https://api.notion.com/v1/pages/{page_id}"
    payload = {"archived": True}
    res = requests.patch(url, json=payload, headers=headers)
    return res

Kết bài

Qua bài viết này, mình đã tìm hiểu cách sử dụng Notion API trong Python để tự động hóa các thao tác trên cơ sở dữ liệu như tạo, đọc, cập nhật, và xóa dữ liệu. Với sự hỗ trợ của Notion API, bạn có thể xây dựng các ứng dụng linh hoạt và tiết kiệm thời gian trong việc quản lý thông tin. Hy vọng hướng dẫn này sẽ giúp bạn dễ dàng tích hợp và khai thác Notion API vào công việc hàng ngày, mở ra nhiều cơ hội nâng cao hiệu suất làm việc.

Cùng chuyên mục:

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn toàn diện về module datetime trong Python

Hướng dẫn toàn diện về module datetime trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Từ khóa yield trong Python

Từ khóa yield trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Định dạng chuỗi Strings trong Python

Định dạng chuỗi Strings trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Làm việc với các biến môi trường trong Python

Làm việc với các biến môi trường trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa iterator và iterable trong Python

Sự khác biệt giữa iterator và iterable trong Python

Cách làm việc với file tarball/tar trong Python

Cách làm việc với file tarball/tar trong Python

Chuyển đổi kiểu dữ liệu trong Python

Chuyển đổi kiểu dữ liệu trong Python

Sự khác biệt giữa toán tử == và is trong Python

Sự khác biệt giữa toán tử == và is trong Python

Làm việc với file ZIP trong Python

Làm việc với file ZIP trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Sự khác biệt giữa byte objects và string trong Python

Sự khác biệt giữa byte objects và string trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format  trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Top