百度网站的优缺点设计说明书模板

news/2025/9/23 18:55:02/文章来源:
百度网站的优缺点,设计说明书模板,做网站到哪里做,网站建设的主要目标上一小节介绍了怎么使用 Python 读取多维表的数据#xff0c;看似可以成功获取到了所有的数据#xff0c;但是在实际生产使用过程中#xff0c;我们会发现#xff0c;上一小节的代码并不能获取到所有的多维表数据#xff0c;它只能获取一页#xff0c;默认是第一页。因为…上一小节介绍了怎么使用 Python 读取多维表的数据看似可以成功获取到了所有的数据但是在实际生产使用过程中我们会发现上一小节的代码并不能获取到所有的多维表数据它只能获取一页默认是第一页。因为我使用的测试表数据量小第一页便可读取完所以有一种获取到所有数据的错觉。 本文介绍如何进行分页读取飞书多维表的所有数据主要内容介绍如下 在线测试使用飞书 API 调试台测试本地测试使用 Python 代码测试介绍通过三种不同的方法自动读取所有分页数据通过 while 循环读取、通过 for 循环读取和通过内函数递归读取。 1、如何读取所有分页数据 那么怎么获取到所有的数据呢 查看官方文档-查询记录在“查询参数”中如下图可以看到有2个和翻页相关的参数“page_token”和“page_size”。 先说下“page_size”和分页记录数相关默认值为 20最大值上图没介绍不过在 API 开头有说明如下图单次最大查询 500 行记录。 而“page_token”是一个翻页参数首页没有该参数从第 2 页开始就必须要传递相关的参数而相关的“page_token”参数的值需要通过上一页返回的数据即响应体进行获取也就是说从第 2 页开始都依赖上一页的返回。 分页标记第一次请求不填表示从头开始遍历分页查询结果还有更多项时会同时返回新的 page_token下次遍历可采用该 page_token 获取查询结果。 查看响应体说明可以看到有两个参数和翻页相关“has_more”和“page_token”。 “has_more”用于判断有没有更多的页有则返回 True。“page_token”用于传递给查询数据接口请求下一页的数据。 1.1 调试读取第二页数据 了解了取数逻辑之后可以先调试一下。调试逻辑先获取第 1 页然后获取到第 2页的“page_token”再发起请求。 1.1.1 读取第 1 页 打开 API 调试台准备多维表多维表的参数说明等参考 第 2 小节《API2通过 Python 读取多维表数据节》的【1.1 获取 demo】。 请求头 和 路径参数参考第 2 小节填写即可查询参数第 2 小节只填写了必填参数所以查询查数没有传递值即使用默认参数值由于我测试的数据仅有 10 条记录所以“page_size”改为 5以便观察翻页的参数值。 改完直接点击【开始调试】即可结果如下可以看到“has_more”的值为 true“page_token”返回一个字符串。 注数据在响应体的 dataitems 中可以展开和多维表的记录比对查看下。 1.1.2 读取第 2 页 将首次请求返回的“page_token”的值填写到路径参数中“page_token”的输入框里再次点击【开始调试】发起请求。 结果如下可以看到“has_more”为 false没有“page_token”参数。10 条记录分两次取完了所以这个结果符合预期。 1.2 调试本地测试读取第二页数据 续上第二次请求结果点击示例代码点击“Python-requests”可以看到 API 连接多了 3 个参数复制代码到本地测试运行。 测试结果如下正常获取到第二页的数据。 2、使用 Python 自动读取所有分页数据 上面通过手动输入“page_token”的方式读取到了测试文档的所有数据在实际生产过程中不可能手动一页页处理所以需要通过代码自动将第一次获取的“page_token”传递给第二次请求。 根据飞书提供的信息至少我们可以有三种方法来穷尽读取任意多维表的所有数据。 方法一通过 while 循环读取方法二通过 for 循环读取方法二通过内函数递归读取 上一小节最后有一个获取tenant_access_token并调接口读取数据的合并代码代码如下。本次测试基于该代码进行迭代。 import requests import jsondef get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/searchpayload json.dumps({})headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)print(response.text)app_id your_app_id app_secret your_app_secret tenant_access_token get_tenant_access_token(app_id, app_secret) app_token your_app_token table_id your_table_id get_bitable_datas(tenant_access_token, app_token, table_id)2.1 while 循环读取分页数据 思路主代码使用while循环调用get_bitable_datas()函数并处理提取page_token在下一次循环传递给get_bitable_datas()函数。 get_bitable_datas()函数需要进行修改以便适配任意页的读取并返回调用接口的数据。 url新增三个参数page_size、page_token、user_id_type第一页page_token可以正常请求数据返回调用接口的数据加上return response.json()。 修改完参考如下 def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps({})headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()主代码加上while循环把调用get_bitable_datas()函数放到循环体中并提取返回数据中的page_token和has_more打印记录。参考如下 app_id your_app_id app_secret your_app_secret tenant_access_token get_tenant_access_token(app_id, app_secret) app_token your_app_token table_id your_table_idpage_token page_size 5 has_more True while has_more:response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:page_token response[data].get(page_token)has_more response[data].get(has_more)print(response[data].get(items)) 运行代码结果如下成功读取并打印分页的数据。 将主代码封装到main()函数中并将所有返回的结果整到一个列表中最终参考代码如下 import requests import jsondef get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps({})headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()def main():app_id your_app_idapp_secret your_app_secrettenant_access_token get_tenant_access_token(app_id, app_secret)app_token your_app_tokentable_id your_table_idpage_token page_size 5has_more Truefeishu_datas []while has_more:response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:page_token response[data].get(page_token)has_more response[data].get(has_more)# print(response[data].get(items))# print(\n--------------------------------------------------------------------\n)feishu_datas.extend(response[data].get(items))else:raise Exception(response[msg])return feishu_datasif __name__ __main__:feishu_datas main()print(feishu_datas)执行结果如下 2.2 for 循环读取分页数据 注在 2.1 基础上修改。 使用 for 循环不如 while 循环便捷。因为 for 循环有一个难点就是需要先确认循环的次数。而确认次数需要知道总数据量。而确认总数据量需要通过调接口获取每次查询请求都会返回一个记录数据量的参数total 如下图。 读取该值后结合每页的记录数page_size使用公式total/size-1然后向上取整来确定循环的次数。 关联核心代码如下 先调一次接口获取到 total 的参数值然后根据公式计算需要循环多少次需要使用math.ceil()方法向上取整顺带将首次请求的page_token和feishu_datas处理然后根据上面得到的次数进行遍历读取后面页数的数据并拼接到feishu_datas中。 # 首次请求单独处理获取 total、page_token、has_more、itemsresponse get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:total math.ceil(response[data].get(total)/page_size - 1)page_token response[data].get(page_token)feishu_datas response[data].get(items)# 非首次请求统一处理for i in range(total):response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:page_token response[data].get(page_token)feishu_datas.extend(response[data].get(items))最终的完整参考代码如下 首次请求和非首次请求的数据分开处理使用 total 计算循环次数不需要 has_more 参数。 import requests import json, mathdef get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps({})headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()def main():app_id your_app_idapp_secret your_app_secrettenant_access_token get_tenant_access_token(app_id, app_secret)app_token your_app_tokentable_id your_table_idpage_token page_size 5# 首次请求单独处理获取 total、page_token、has_more、itemsresponse get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:total math.ceil(response[data].get(total)/page_size - 1)page_token response[data].get(page_token)feishu_datas response[data].get(items)# 非首次请求统一处理for i in range(total):response get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if response[code] 0:page_token response[data].get(page_token)feishu_datas.extend(response[data].get(items))else:raise Exception(response[msg])else:raise Exception(response[msg])return feishu_datasif __name__ __main__:feishu_datas main()print(feishu_datas) 执行结果如下 2.3 内函数递归读取分页数据 注在 2.1 基础上修改。 本小节介绍使用内函数进行递归处理相对会比较复杂。 目标是传入相关的参数便可获取到多维表的所有数据。 实现该目标主要是在get_bitable_datas()函数中进行迭代 递归逻辑加上内函数inner()在内函数中调用外函数get_bitable_datas()什么时候调用内函数has_more为True的时候。 数据的存储问题将存储数据的列表feishu_datas放到函数外作为全局变量函数get_bitable_datas()的功能是给列表feishu_datas添加元素。 直接看看最终完整的参考代码 将feishu_datas变量放到函数之前使得全局可调用get_bitable_datas()中新增内函数inner()该函数功能只有一个就是调用外函数get_bitable_datas()。当has_more值为True的时候便不断调用内函数inner()也不断调用外函数get_bitable_datas()直到最后一页has_more值为False时一层层返回最终得到记录所有数据的列表feishu_datas。在main()函数中直接调用get_bitable_datas()函数便可得到记录所有数据的列表feishu_datas。 import requests import jsonfeishu_datas []def get_tenant_access_token(app_id, app_secret):url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internalpayload json.dumps({app_id: app_id,app_secret: app_secret})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload)# print(response.text)return response.json()[tenant_access_token]def get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size20):url fhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search?page_size{page_size}page_token{page_token}user_id_typeuser_idpayload json.dumps({})headers {Content-Type: application/json,Authorization: fBearer {tenant_access_token}}response requests.request(POST, url, headersheaders, datapayload).json()def inner(tenant_access_token, app_token, table_id, page_token):# 调用外函数递归调用get_bitable_datas(tenant_access_token, app_token, table_id, page_token)if response[code] 0:page_token response[data].get(page_token)has_more response[data].get(has_more)feishu_datas.extend(response[data].get(items))if has_more:# 调用内函数inner(tenant_access_token, app_token, table_id, page_token)else:raise Exception(response[msg])def main():app_id your_app_idapp_secret your_app_secrettenant_access_token get_tenant_access_token(app_id, app_secret)app_token your_app_tokentable_id your_table_idpage_token page_size 5get_bitable_datas(tenant_access_token, app_token, table_id, page_token, page_size)if __name__ __main__:main()print(feishu_datas)执行结果如下 3、小结 使用 Python 读取多维表分页需要传递“page_token”参数。 第一页“page_token”参数为空字符串第二页开始从上一页的响应体提取“page_token”的值。 使用 Python 实现可以通过三种方式读取所有分页的数据while 循环读取、for 循环读取和内函数递归读取。 while 循环使用has_more参数直到has_moreFalse跳出循环for 循环使用total参数结合page_size计算循环次数内函数递归使用has_more参数递归调用内函数直到has_moreFalse时逐层返回结果。 while 循环 相对比较好理解而且很简洁。for 循环通过数量进行计算或有一定风险就是在读取的过程中如果新增数据可能会出现 bug如果新增数据涉及新的页将读取不到新增的数据。内函数递归方法理解难度相对较高代码相对简洁。 个人推荐顺序while 循环内函数递归for 循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hao123网站浙江省建设厅网站资质迁移

背景介绍 至尊宝和紫霞仙子是电影《大话西游》中的人物。该电影讲述了至尊宝放弃戴上金箍成为盖世英雄,选择当一个凡人,与‌紫霞仙子长相厮守的故事。这部电影通过奇幻、冒险、喜剧和悲剧的元素,展现了一段跨越时空的爱情故事,充…

婚介网站建设的策划中国前十强企业

macOS 12 Monterey是苹果公司的一次重大突破,它打破了设备间的壁垒,将不同设备无缝地连接在一起,极大地提升了用户的工作效率和娱乐体验。Monterey带来了通用控制、AirPlay、捷径等新功能,以及一些实用的新小功能。 安装&#xf…

动漫php网站模板seo公司

这里写目录标题 一、前言二、下载三、简要总结 一、前言 原文以及该系列后续文章请参考:安装Electron 随着前端的不断强盛,现在的前端已经不再满足于网页开发了,而是在尝试能否使用前端的开发逻辑来开发PC端的桌面软件。 即用html、js、css…

大丰区住房和城乡建设局网站虾米播播支持wordpress吗

期待已久的时刻已经到来,现在我们很高兴地宣布, CUBA平台终于加入了自由软件社区! 从现在开始,平台的所有运行时部分都是开源的,并根据Apache 2.0许可进行分发。 这意味着您将完全可以免费创建和分发应用程序&#xff…

Hetao P10588 十载峥嵘桀骜 题解 [ 紫 ] [ 树的直径 ] [ 矩阵加速 DP ] [ 状态设计优化 ]

十载峥嵘桀骜:感觉挺简单的,就是代码处理比较繁琐。 一个最简单的部分分是暴力模拟建图之后跑矩阵快速幂转移,时间复杂度 \(O(n^3\log t)\),随便拼点其他特殊性质就能 68pts 了。 考虑正解,结合树的直径的 DFS 求…

GO学习记录九——数据库触发器的运用+redis缓存策略

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

顺德网站建设哪家好深圳龙岗网络

问题 今天在使用lombok简化model类时。使用Builder建造者模式。报以下异常 解决办法。 去掉NoArgsConstructor添加AllArgsConstructor源码分析 下图是编译后的源码 只使用Builder会自动创建全参构造器。而添加上NoArgsConstructor后就不会自动产生全参构造器

用 Julia 提取轮廓和字符特征进行验证码识别

验证码图像中的字符常常被干扰线穿插、扭曲变形,导致传统的二值化 + OCR 方法失效。为了解决这类问题,我们可以借助轮廓提取技术,分析字符的几何结构,通过区域形状进行字符识别。本篇博客介绍如何使用 Julia 实现轮…

深入解析:269-基于Python的58同城租房信息数据可视化系统

深入解析:269-基于Python的58同城租房信息数据可视化系统2025-09-23 18:51 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important…

企业网站建设的实践意义哪里有做网站系统的

FastAPI 概述 参考文档: 中文文档轻松上手Python的Web神器:FastAPI教程 介绍 FastAPI 是一个基于 Python 的现代 Web 框架,它具有快速构建高性能 API 的特点。 FastAPI 关键特性: 快速:可与 NodeJS 和 Go 并肩的极高性能&am…

吉林集安市建设局网站哈尔滨网站优化对策

jax可微分编程的笔记(8) 第八章 循环神经网络 神经网络是可微分编程中最为重要的模型构造形式,也是当代 深度学习的基本组成部分,深度学习中的“深度”一词,便是对 神经网络的层数的形容。 8.1 神经网络的生物学基础 通过层层近似&#x…

建设执业资格注册管理中心网站wordpress 两栏

欢迎来到设计模式系列的第三篇文章!在前两篇文章中,我们已经学习了设计模式的基本概念以及单例模式的应用。 今天,我们将深入探讨第二个模式——工厂方法模式。 工厂方法模式简介 工厂方法模式是一种创建型设计模式,它提供了一…

你有网站 我做房东 只收佣金的网站电商平台建设费用

概念 ToF 是 Time of Flight 的缩写, ToF 测量法又被称作飞光时间测量法,是通过给目标连续发射激光脉冲,然后用传感器接收在被测平面上反射回来的光脉冲,通过计算光脉冲的飞行往返时间来计算得到确切的目标物距离。因为返回时间很…

网站如何做双语言刷关键词排名seo软件

1、背景 项目上有这样一个需求&#xff0c;前端传文件过来&#xff0c;后端接收后按照特定格式对文件进行重命名。(修改文件名需求其实也可以在前端处理的) //接口类似于下面这个样子 PosMapping("/uploadFile") public R uploadFile(List<MultipartFile> fil…

如何在建设银行网站申购纪念币做网站推广怎么找客户

目录 一.类的声明 二.确定成员变量 三.成员函数 1.带参的构造函数&#xff0c;析构函数&#xff0c;拷贝构造 2.size()与capacity() 3.运算符重载 重载数组下标访问[] 重载 重载比较运算符&#xff08;<&#xff0c; < &#xff0c; > &#xff0c; > …

网站建设名词解释安徽合肥做网站

前言 K8S&#xff0c;全称 Kubernetes&#xff0c;是一个用于管理容器的开源平台。它可以让用户更加方便地部署、扩展和管理容器化应用程序&#xff0c;并通过自动化的方式实现负载均衡、服务发现和自动弹性伸缩等功能。 具体来说&#xff0c;Kubernetes 可以将应用程序打包成…

漳州市网站建设公司北京网站设计公司兴田德润优惠吗

文章目录 Mysql中的排序规则1. 数据库默认的排序规则2. 查看表的排序规则2.1 查看表排序规则2.2 查看字段排序规则 3.修改排序规则3.1 修改库3.2 修改表3.3 修改字段 Mysql中的排序规则 1. 数据库默认的排序规则 mysql8的默认排序方式是 utf8mb4_0900_ai_ci mysql5的默认排序…

湖南网站设计外包哪家好wordpress收益

在Java中&#xff0c;finally块中的代码几乎在任何情况下都会执行&#xff0c;无论是在try块中的代码正常执行完毕&#xff0c;还是遇到异常被catch块捕获时。finally块主要用于执行清理工作&#xff0c;比如释放资源等。然而&#xff0c;存在少数几种情况下finally块中的代码不…

VMware之后下一个消失的永久许可,Citrix Netscaler VPX旧版许可已经失效了!你升级了吗?

VMware之后下一个消失的永久许可,Citrix Netscaler VPX旧版许可已经失效了!你升级了吗?​哈喽大家好,欢迎来到虚拟化时代君(XNHCYL),收不到通知请将我点击星标!“ 大家好,我是虚拟化时代君,一位潜心于互联…

做阀门网站网站建设赚钱流程

Winform使用Webview2创建demo1实现回车导航到指定地址 往期目录参考文档实现1.安装visual studio2.创建单窗口应用3.修改项目中的窗体名称MainForm4.添加按钮5.添加窗口Demo16.在Demo1中添加WebView2 SDK7.在Demo1窗体中选择添加textbox和webview28.在MainForm.cs窗体中添加but…