粉丝183获赞1715

fast api 是一种现代高性能的 python web 框架,用于构建 web 应用程序和 api。 它基于 python 的异步编程库、 access you 和 wait 语法,以及类型注解和自动文档生成等特性, 提供了快速、易用和可靠的开发体验。接下来的视频将向您介绍十个被忽视的 face api 实用功能,让您更好地利用这个强大的框架 代码参见拍放学院大本营公众号,还有更多技术内容分享。一、依赖注入 skpi 知识定义依赖项, 这些依赖项会被解析并注入到路径操作中。您可以使用这个功能来处理常见任务,如数据库连接或用户身份验证。二、响应模型通过使 使用 pidantic 模型声明响应结构,您可以自动生成 api 文档并验证响应数据。三、 http 异常通过抛出带有状态代码和详细信息的 http 异常, 您可以处理不同的 http 状态代码,提供更好的错误处理和用户体验。四、路径参数和转换器 使用转换器将路径参数转换为所需的拍放数据类型,使得处理和验证输入数据更加灵活和方便。五、后台任务将需要长时间运行的任务委托给后台处理,以释放 api 的响应时间,提高系统的并发性和性能。 六、查询参数和字符串验证使用酷瑞声明字符串查询参数并进行验证,确保输入 数据的有效性和安全性。七、带密码和散裂的 os 二和使用 drew 令牌的 bearer fast api 内置了 osr 密码和 bearer, 用于处理用户注册、登录和令牌检索的所有路径,使得身份验证和授权变得更加简单和安全。 八、使用 pytentic 进行数据验证和序列化 fast api 使用 pytentic 进行数据验证和序列化,提供了一种简单的方式来处理错误和复杂数据类型,确保数据的准确性和一致性。 九、使用 starlet 的 test client 进行测试 test api 支持使用 starlet 的 test client 编写,简洁的测试,用力帮助您确保应用程序的正确性和稳定性。十、自动交互式 api 文档 fast api 通过集成 swagger、 ui 和 radar, 提供了自动生成的交互式 api 文档。 您只需访问 dogs 或 redog 路由,即可方便的查看和测试 api 的功能和用法。通过掌握这些被忽视的 fast api 实用功能,您将能够更高效地开发外部应用程序和 api, 提高开发效率和代码质量,为用户提供更好的体验。快来体验 ss kpi 吧! 推荐书单利用 fast api 构建拍放微服务利用 fast api 构建拍放微服务详细阐述了与分布式机器学习相关的基本解决方案,主要包括,设置 fast api 探索核心功能。依赖注入研究构建微服务应用程序,连接到关系数据库, 使用非关系数据库保护 rest api 的安全。创建携程事件和消息驱动的事物。利用其他高级功能解决数值符号和图形问题。添加其他微服务功能等内容。 此外,本书还提供了相应的势力代码,以帮助读者进一步理解相关方案的实现过程。


之前呢,我们已经了解了有关联关系的数据应该如何添加和更新,那么接下来呢,我们再来聊一聊如何查询和删除。 那么这两个操作呢,我们同样啊,直接去演示看效果就可以了。那我们再去操作的时候呢,同样是操作 python 的 对象,就可以对这个数据呢进行操作, 那我们把这个代码呢,同样啊,写到了咱们这个 c r u d 二十四这个文件里边,我们直接在咱们后边这个代码上进行追加就可以了。那我们先说这个查询吧,这个查询的话呢,其实比较简单,我们在这的话呢,写上一个叫做 query data, 好吧,就是查询数据好,那么这个查询数据的话呢,同样啊,我们需要先去进行数据的这一个抽象啊,也就数据库的抽象,告他我们要连接哪个数据,然后再其次是就是进行查询。 那这个对于单个数据的查询呢,我相信各位小伙伴都基本上是没有什么问题的,就比如说我想去查询这个学生的信息,我们可以通过 get 也好啊,或是 filter 也好啊,都无所谓,对不对?那我们就可以进行获取 好,那么获取到他了以后呢,然后接下来我们就可以打印这个 student, 这个应该是没什么太大问题的,对不对?好,那在这的话呢,我们给他继续运行一下啊, 看效果好,那么当运行以后的话呢,那么他就可以获取出这个学生的一个基本信息,这个应该是没问题的。那么在这的话呢,我们获取这个学生里边的名称,比如说获取他内幕,这个应该没问题吧?然后再起的就是我们现在要关注的是谁啊?要获取他的关联的这个字段信息, 那么关联谁呢?对于学生来说的话呢,它有关联的个人档案信息也是 profile, 对 不对?好,那么这个 profile 里边的话呢,有 address 和 phone 这两个字段,对不对?那么我们能不能获取这两个字段呢?这个是需要我们关注的。好,那在这的话呢,按照这个思路来说的话,我们可能要这么去写,写一个 profile, 然后获取它里边的这个电话,再获取它里边这个地址,是不是可以这样?因为咱们这个 profile 的 话呢,在这边去定义的时候,我们会发现它就是一个属性嘛, 而这个属性的话呢,它映射的是谁啊?映射的是一个对象,而对象里边它又包含两个属性,所以说给我们的感觉呢,我们直接通过这种炼制的编程就可以了,对不对?好,那么知道这意思以后来我们来去运行看效果啊,那么当我们在去运行的时候,我们会发现啊,这时候的话呢,它会给我们进行报错, 那么它这个报错题是什么呢?说 attribute ever 是 一个属性错误,说 query set 就是 查询对象 object has no attribute 没有这个分,有时候相当于什么呀?相当于是我们这儿这个东西是有的,但是它没有这个分属性, 但实际上来说的话呢,我们会发现啊,这个 profile 他 本来就应该对应的是一个对象啊,那么好像给我们感觉好像是他没有获取到,是不是?好,那么这时候的话呢,我们可以这样去写,我们给他去运行啊,我就只打印这个属性,看他有没有这个值,然后我们再去运行的时候,你就会发现, 这时候的话呢,他就不再跟我们进行报错了这个吕布的信息名称,这个是没问题的,但是当他在获取这个啊 profile 的 时候,他打印的是一个对象,而这个对象是什么呀?是一个 query set, 而不是一个什么呀 profile 的 那个对象。 所以说它这里边实际上是没有咱们这个什么呀 address 和 phone 的 啊,而这个 query set 是 谁啊?是人家这个 o r m 里边跟我们去创建对象, ok 吧,因为我们会发现你看这是它这个,呃,海归里边 query set 这里边这个对象嘛?这个 object 嘛,对不对?并不是我们自己创建的什么 student profile。 好,那么问题是这个东西他的原因在哪?为什么是这样子呢?这个东西啊,最主要的原因在于就是我们这的话呢,是一个异步的,然后再其的就是咱们这是关联对象,所以说啊,他并不会默认的帮助我们将他这里边的关联字段给我们查询出来, ok 吧?好,那么它既然不能帮助我们进行查询的话,那怎么办呢?好,这时候的话呢,我们就需要去手动的给它进行获取,那么手动获取怎么去获取呢?我们可以这么去写,在这的话呢,我们这么着啊,我要获取它这个字段,那因为它是一个一步的,那好,我就写一个叫做 a v t 等待这个东西, 等待它,等待它以后的话呢,我们获上一个叫做 pro。 好, 有了它以后的话呢,然后接下来我们就可以通过这个 pro 是 pro, 然后用它来获取这里边具体的这个值啊,有相当什么呢?相当是我手动的,先去调用一下这个查询对象,然后的话呢,查询出来以后给他,然后再进行获取, ok 吧?好,那么这样的话呢,我们再去打印咱们这里边这个属性的时候,你就会发现它就可以了 啊,不是写,写个否,好吧,好,然后我们再去运行看效果。 好,那这时候我们可以看到上海还有他的电话号码,就给我们拿出来了,对不对?那么这是这样一个方式啊,当然除这样一个方式以外的话呢,那么还有种方式人这个框架呢,为我们提供了另一种方式,就这样去写写上一个叫做,呃, student 二吧, 同样是获取学生信息,但是的话呢,他再去获取完学生信息以后呢,后边加上一个叫方法叫做 pro 啊,就是 pr e fetch relation 啊,就是 r e l a t d 这个东西,然后告诉他我要获取它里边的这个关联词段啊,我关联词段是谁啊?叫做 profile 嘛,对不对? 好,那么有了它了以后, ok, 那 么这时候我们再去打印信息的时候,你就会发现它是可以直接打印这个字段里边这个数据信息的。哎,我们再去运行看下效果啊。 好,那当我们运行以后,然后我们可以可以看到上海和电话号码是不是可以获取出来,那也就相对什么呀?这个东西相对是告诉他需要去获取,哎,关联数据, 通过这个方法告诉他我要获取关联数据,那么至于这样的话呢,我们可以写多个,如果说有多个关联字段的话,那么我们就可以给他写上多个,给它填充进来, ok 吧?好,那么这是这块 成,那么这是什么呀?这是一对一的,对不对?好,那么一对一的以外,然后还有就是什么呢?就是一对多,还有多对多的,对吧?也相当。什么呀?我们查出来的这个关联字段的话呢?啊,不是多个属性啊,是有多个值,那比如说我们对于这个成绩来说, 成绩来说的话,然后我们可以看到对于学生来说,这有一个九的,对吧?那这个九的话呢?有三个,有三个信息啊,就是 student id 有 九,有三个数据信息。好,那么有他三个数据信息的话,那么我们怎么去过去呢?我们我们可以这么去写,写个叫做 s t u 三等于 await, await student, 然后就是 id, 然后同样 id 等于什么? id 等于九的,这样的话,我们是不是就找那个学生信息了?找那学生信息以后的话呢?然后我们 pro, 然后让它去加载谁啊?加载这个属性, 就是因为它这个是它这个成绩实际上是有三个的嘛,对不对?所以说我们这的话呢,应该是给能给我们获取出三个来。好,那么获取出三个来以后的话呢?然后在这我们直接去便利就可以了。 four, 然后 grid 让他去获取这个属性,依次便利打印他这里边属性,比如他的评分,他这个成绩是多少,那我们给他进行输出就可以了, ok 吧?好,那我们再来给他运行看效果。 好,那这时候呢,我们就可以看到这是十九、十八十这三个成绩就获取出来了,对不对?比如说相当于什么呀?相当于是我们通过这样一个属性呢,就可以帮助我们把关联属性给它拿出来,拿出来以后我们就是按照咱们这个对象的方式进行操作就可以了。 对象然后点属性,因为他是有多个吗?所以说我们可以给他进行便利,如果说有单个的话,我们给他直接进行输出就可以了,好吧,好,那么这是这块啊,当然除这以外的话呢,我们后边的话呢,也可以考虑给他加上一个叫做哦。啊,这个东西加不加?就就就这个都都无所谓啊,那么我们点击运行, 你会发现效果是一样的啊,这东西就看我们这个具体的情况了啊,就相对是有的时候版本的话呢,他可能要求我们去加,有的时候呢可能不加也没有问题,对吧?那这东西就看具体的版本情况,好吧。好,那么这聊完了以后呢,关于这个查询啊,基本上就这个几个东西, 因为这个东西咱们就是获取对象嘛,获取对象,然后获取关联资料嘛,就这点东西啊,无论是一对一也好,还是一对多也好,都是这么一个东西好。那么除他以外的话呢,还有个东西叫做删除,删除的话呢,我们再直接写一个啊,叫做 delete, 给他就删除数据,删除数据的话呢,在这我们要去关注的是什么呢?就是他在去删除单个数据的时候啊,单个数据的时候是什么样子的?你就比如说啊,我在这去删除这里边的这个,呃,这个成绩吧,比如说 id 为九的, id 为九的最后一条数据, 那面对这样一个情况的话呢,我们可能要这么去写,我要去直接写上一个叫做 await, await await, 然后找到这个它的这个评分点 get, get 谁啊? get id id, 然后这儿写好了以后,然后我们是不是就可以拿到这个成绩这块的信息啊?不是, id 等于一的,应该是 id 等于九的,是吧? id 等于九等于九的,然后我们在后边的话呢,再给他写一个叫做 await, 等待他进行删除就可以了。那么像这样一个情况的话呢,然后我们给他进行删除,看效果啊,我们要给他 这写个叫做 run delete, 好,那么当运行以后,然后我们会发现没有报错,对不对?然后我们再查看这边这个数据信息,然后点击运行,你会发现它只删除了一条数据,这个是没问题吧?然后我们看学生这边 idv 九的这个学这个学生还是在的,对吧?这都是没问题的。 好,那这个东西搞定了以后,然后我们再来看,我们来做一个极连的删除。那么极连删除是指什么意思呢?就是我们删除这个 idv 九的这个学生, 删除它,因为我们在这边的话呢,在咱们这个成绩这边的话呢,实际上是有两个关联的属性的,比如说外界引入它了,对不对?那么第九号学生都已经没有了,那么他这两个成绩是不是也就没有用了? 那也就说我们要做一个极连的删除,对不对?那么极连删除的话,怎么去删呢?首先我们先写上一个这个 student, 然后等于 await 等于九,等九以后的话呢,然后我们给它进行删除, ok 吧?好,那么它在删除的时候,我们来再去运行看效果啊, 好,那么当我们运行以后,然后我们会发现它没有报错,对不对?没有报错以后,然后我们先观察这个学生,学生的话呢, id 为九的这个数据信息就已经没有了,对不对?那么它没有了以后,然后我们再看它这边这个 成绩,你会发现 id 等九那条数据呢,也删除了,那么也就相当于什么呀?它会自动的来帮助我们进行一个批量删除, ok 吧?好,那么这个极难烧竹,并不是说,哎,一直会有这样一个情况,一直会有这样一个功能,这个最主要的原因呢在于就是我们再去写这个学生信息的时候,然后这边的话呢,我们有一个什么呀?有一个这个东西叫做 undelinked, 看到吗?他说什么呀?叫做 c a s, c a d e 这个东西,那这个东西呢,就是急练删除的意思,所以说的话呢,当拥有这个功能的时候,那么他就能急练,就是能帮助我们急练删除,如果说没有的话,那么他大概率是删不了的,那么这时候的话呢,我们就需要去手动的把什么呀?先去把学生里边所有的这个成绩, 就是所有的成绩先给他查询出来,就是一起按照这样方式去删就可以了, ok 吧?好,那么因为咱们有激烈删除吗?所以说的话呢,我们就没有必要了,我直接删学生, ok, 那 么这个成绩呢?也同样的一块删除了,好吧,好,那么这是这块啊,成,那么这搞定了以后的话呢,关于咱们这个查询和删除呢,基本上也就算是说完了啊, 那么整体上来说的话呢,咱们这个增删改查,哎,基本上就这些增加的话呢,我们要注意它的一个先后关系,先创建哪个对象,再创建哪个对象,然后它属性是怎么去赋值的? 那这个更新的话呢?哎,我们有两种样的方式啊,第一种样的方式的话呢,就是我们先去找个对象,然后给它通过属性来进行赋值,赋值完了以后呢,然后记得保存对象。还有一种方式的话呢,就是我们直接通过这个类,然后调用 update 来进行更新, 然后查询的话呢,这边有一个什么就是关联数据的查询,我们需要调用一个方法啊,调用方法而删除的话呢,就是这个极点,删除这个东西咱们要注意,好吧?好,那么这搞定了以后,咱们这个啊关联自断的这种增删改查就算是说完了啊。

优化出图功能,增加制图时,可以根据所设置的行政区划分区块批量出图。首先进行出图基本配置, 设置行政村图层和相应行政村字段,设置搜略图相关参数,设置完成后再进行图层配置。配置需要出图的图层模板设置完成,点击确定 基本配置和图层配置。设置完成后就可以进行开始制图,点击开始制图,分别选择制图模板类别,选择相应的出图图层。 点击功能框右侧加号按钮添加图层,可以将影像底图加 在至制图列表图层中。图层设置完成之后,点击制图,进入制图预览对话框。 在项目范围选择小框中选中选择指定区域,这里区域来自于基本配置中设置的行政区划图层。选择所有区域既可以按照行政区划批量出图,点击下一步确定比例池, 确定是否插入苏略图以及放置位置,设置出图图例和确定是否范围外图层模糊。 设置完成后,点击确定开始批量制图。制图完成后,默认打开第一个行政村图,制图成果存放在当前工程制图文件夹下。