run_query_database
最近在做一个小工具,需要对数据库进行查询并且解析notion api返回的数据。
上次推荐了一个比较好的封装
Python Notion Database — notion-database latest documentation
但是在里面没有找到查询数据库的相关介绍
自己研究了半天,发现有些函数没有被写到文档里
我找到一个比较相关的run_query_database
提示需要输入database_id
以及body
我直接去官网查看了一下
写出了以下代码
D = Database(integrations_token=token)
body = {
"filter": {
"property": "喜马拉雅",
"url": {
"equals": "https://m.ximalaya.com/album/73808503?from=pc"
}
}
}
D.run_query_database(database_id=databes_rhythm_id, body=body)
result_dict = D.result
pprint.pprint(result_dict)
其中body
是参照官网的格式来写的
Start building with the Notion API
其实url
属性没有出现在列表中,我这个算是死马当活马医,结果顺利跑起来了。
jsonpath
数据跑出来之后会返回一大堆信息
然而我只需要里面的页面id等少数几个信息
我之前都是使用手动的方式定位信息,比如说
result[0]['id'][1]
这实在是太蠢了…
接着看别人推荐了一下jsonpath
我参考了一下文档
最重要的就是它的表格以及它的示例
{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
虽然说没有看的太懂,但是基本上够用了。
我主要是用的就是..
无脑进行递归查找
如果出来的结果太多,那么就写几个前缀缩小一下范围
page_id = jsonpath.jsonpath(D.result, '$.results[0].id')