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

我参考了一下文档

JSONPath - XPath for JSON

最重要的就是它的表格以及它的示例

截屏2023-03-14 10.09.38.png

{ "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
    }
  }
}

截屏2023-03-14 10.10.32.png

虽然说没有看的太懂,但是基本上够用了。

我主要是用的就是.. 无脑进行递归查找

如果出来的结果太多,那么就写几个前缀缩小一下范围

page_id = jsonpath.jsonpath(D.result, '$.results[0].id')

最后修改:2023 年 03 月 14 日
如果觉得我的文章对你有用,请随意赞赏