Databases
Retrieve a database
async def main():
async_api = AsyncNotionAPI(access_token='<NOTION_TOKEN>')
database = await async_api.get_database(database_id='<DATABASE_ID>')
api = NotionAPI(access_token='<NOTION_TOKEN>')
database = api.get_database(database_id='<DATABASE_ID>')
Query
async def main():
async_api = AsyncNotionAPI(access_token='<NOTION_TOKEN>')
database = await async_api.get_database(database_id='<DATABASE_ID>')
async for page in database.query():
...
api = NotionAPI(access_token='<NOTION_TOKEN>')
database = api.get_database(database_id='<DATABASE_ID>')
for page in database.query():
...
Filters
You can use filter classes in python_notion_api.models.filters
to create property filters and pass them to the query.
from python_notion_api.models.filters import SelectFilter
async def main():
async_api = AsyncNotionAPI(access_token='<NOTION_TOKEN>')
database = await async_api.get_database(database_id='<DATABASE_ID>')
await for page in database.query(
filters=SelectFilter(property='<PROPERTY_NAME / PROPERTY_ID>', equals='<VALUE>')
):
...
from python_notion_api.models.filters import SelectFilter
api = NotionAPI(access_token='<NOTION_TOKEN>')
database = api.get_database(database_id='<DATABASE_ID>')
for page in database.query(
filters=SelectFilter(property='<PROPERTY_NAME / PROPERTY_ID>', equals='<VALUE>')
):
...
'and' and 'or' filters are supported:
from python_notion_api.models.filters import SelectFilter, or_filter, and_filter
async def main():
async_api = AsyncNotionAPI(access_token='<NOTION_TOKEN>')
database = await async_api.get_database(database_id='<DATABASE_ID>')
await for page in database.query(
filters=or_filter([
SelectFilter(property="Select", equals="xxx"),
and_filter([
NumberFilter(property="Number", greater_than=10),
CheckboxFilter(property="Checkbox", equals=True)
])
])
):
...
from python_notion_api.models.filters import SelectFilter, or_filter, and_filter
api = NotionAPI(access_token='<NOTION_TOKEN>')
database = api.get_database(database_id='<DATABASE_ID>')
for page in database.query(
filters=or_filter([
SelectFilter(property="Select", equals="xxx"),
and_filter([
NumberFilter(property="Number", greater_than=10),
CheckboxFilter(property="Checkbox", equals=True)
])
])
)
...
You can read more on filters here
Sorts
You can use python_notion_api.models.sorts.Sort
class to create sorts and pass them to the query.
from python_notion_api.models.sorts import Sort
async def main():
async_api = AsyncNotionAPI(access_token='<NOTION_TOKEN>')
database = await async_api.get_database(database_id='<DATABASE_ID>')
await for page in database.query(
sorts=[
Sort(property="Title"),
Sort(property="Date", descending=True)
]
):
from python_notion_api.models.sorts import Sort
api = NotionAPI(access_token='<NOTION_TOKEN>')
database = api.get_database(database_id='<DATABASE_ID>')
for page in database.query(
sorts=[
Sort(property="Title"),
Sort(property="Date", descending=True)
]
)