Notion modified to include more recent packages.
Project description
notion-df
: Seamlessly Connecting Notion Database with Pandas DataFrame
Please Note: This project is currently in pre-alpha stage. The code are not appropriately documented and tested. Please report any issues you find. Thanks!
Installation
pip install notion-df
Usage
-
Before starting, please follow the instructions to create a new integration and add it to your Notion page or database.
- We'll refer
Internal Integration Token
as theapi_key
below.
- We'll refer
-
Pandas-flavored APIs: Just need to add two additional lines of code:
import notion_df notion_df.pandas() #That's it! page_url = "paste your page url from Notion" api_key = "paste your api key (internal integration key)" import pandas as pd df = pd.read_notion(page_url, api_key=api_key) df.to_notion(page_url, api_key=api_key)
-
Download your Notion table as a pandas DataFrame
import notion_df df = notion_df.download(notion_database_url, api_key=api_key) # Equivalent to: df = pd.read_notion(notion_database_url, api_key=api_key) df.head()
Only downloading the first `nrows` from a database
df = notion_df.download(notion_database_url, nrows=nrows) #e.g., 10
What if your table has a relation column?
df = notion_df.download(notion_database_url, resolve_relation_values=True)
The
resolve_relation_values=True
will automatically resolve the linking for all the relation columns whose target can be accessed by the current notion integration.In details, let's say the
"test"
column in df is a relation column in Notion.- When
resolve_relation_values=False
, the return results for that column will be a list of UUIDs of the target page:['65e04f11-xxxx', 'b0ffcb4b-xxxx', ]
. - When
resolve_relation_values=True
, the return results for that column will be a list of regular strings corresponding to the name column of the target pages:['page1', 'page2', ]
.
- When
-
Append a local
df
to a Notion database:import notion_df notion_df.upload(df, notion_database_url, title="page-title", api_key=api_key) # Equivalent to: df.to_notion(notion_database_url, title="page-title", api_key=api_key)
-
Upload a local
df
to a newly created database in a Notion page:import notion_df notion_df.upload(df, notion_page_url, title="page-title", api_key=api_key) # Equivalent to: df.to_notion(notion_page_url, title="page-title", api_key=api_key)
-
Tired of typing
api_key=api_key
each time?import notion_df notion_df.config(api_key=api_key) # Or set an environment variable `NOTION_API_KEY` df = notion_df.download(notion_database_url) notion_df.upload(df, notion_page_url, title="page-title") # Similarly in pandas APIs: df.to_notion(notion_page_url, title="page-title")
Development
- Clone the repo and install the dependencies:
git clone git@github.com:lolipopshock/notion-df.git cd notion-df pip install -e .[dev]
- How to run tests?
NOTION_API_KEY="<the-api-key>" pytest tests/
The tests are dependent on a list of notebooks, specified by the following environment variables:
Environment Variable | Description |
---|---|
NOTION_API_KEY |
The API key for your Notion integration |
NOTION_ROLLUP_DF |
- |
NOTION_FILES_DF |
- |
NOTION_FORMULA_DF |
- |
NOTION_RELATION_DF |
- |
NOTION_RELATION_TARGET_DF |
- |
NOTION_LONG_STRING_DF |
- |
NOTION_RICH_TEXT_DF |
- |
TODOs
- Add tests for
-
load
-
upload
-
values.py
-
configs.py
-
base.py
-
- Better class organizations/namings for
*Configs
and*Values
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for notion_df_extended-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f19b317e34c42998a7b19fe52f0e61529336514b23e607abecfac29ee032841 |
|
MD5 | affc7dfab2b995ef89f6671944b47c1c |
|
BLAKE2b-256 | 8b5aa5e4f59daf59a3bf842ad3bea0a542c6f6038d3b56588b0700c8c6ad71f1 |