- 博客(185)
- 收藏
- 关注
原创 SQLAlchemy 连接使用数据库
相对于 Django 来说,Flask 并没有 Django 中自带的那种 ORM 框架,但是我们可以利用第三方的 ORM 框架来进行操作,比如我们这里介绍的 SQLAlchemy。接下来这一篇笔记将会介绍如何使用 SQLAlchemy 连接数据库、建立模型、操作表、以及查询操作表数据等内容。
2023-11-26 23:34:21
38
原创 Flask笔记二之blueprint和session介绍
Blueprint 的使用主要有两步,一步是定义,一步是注册。下面我们用一个实例来介绍如何使用,比如我们这里使用用户登录验证的接口来操作。我们在app/文件夹下创建一个名为user的文件夹,在其下再创建一个名为bp_user.py这里,我们实例化了Blueprint,定义一个bp,然后使用的方式定义路由和可以调用的方法,比如GET,比如POST。在 login() 函数内部可以进行我们必要的一些逻辑处理,比如用户名密码进行验证操作。然后需要将其在return appflask run。
2023-11-22 00:03:29
120
原创 Flask笔记一之项目搭建、配置项导入
这一篇开始介绍Flask系列笔记,这个系列笔记将和之前的Django笔记一样会从Flask的官方文档中提取一系列的知识点,整理成系列笔记。这是 Flask 系列笔记的第一篇,本篇笔记介绍的是 Flask 项目的搭建以及配置项的导入,我们用到的 Python 的版本还是 3.8,用到的 Flask 的版本是 2.3.2。接下来我们这里用Pycharm创建一个项目,我们命名为flask_blog,在其下文件夹为app,其下再创建一个。
2023-11-21 00:15:49
134
原创 Redis对象的数据结构及其原理汇总
这样,我们就创建了两个对象,且两个都是字符串对象,因为键值对的 key 和 value 都是字符串。如果我们创建了一个列表数据,那么 key 是字符串对象,而值 value 是列表对象。//类型//编码//指向底层实现数据结构的指针void *ptrtype在上面的结构中,type 指的是这个对象的类型,比如我们创建了一个列表数据,那么这个数据的 key 就是一个字符串对象,由这个结构里的 type 来指定,这个数据的 value 就是一个列表对象,也是由 type 来进行指定区分。
2023-11-17 23:08:23
471
1
原创 Redis数据结构八之各对象对应的底层实现
本篇笔记介绍各对象及其编码和底层实现结构。属性用于表示这个对象的类型,比如 string,list,hash,set,zset 分别表示字符串对象,列表对象,哈希对象,集合对象和有序集合对象。属性则表示该对象使用的编码则是指向底层的指针。
2023-11-12 23:29:31
35
原创 Redis数据结构七之listpack和quicklist
虽然 listpack 没有了指向尾部节点的偏移量,但是同样可以快速找到 listpack 的尾部节点,方式是通过 总字节长度属性的值,可以直接获取到 listpack 的尾部,然后根据 entry 元素尾部的 length 属性,就可以找到尾部 entry 的起始地址了。
2023-11-11 22:19:19
183
原创 Redis数据结构六之跳跃表
前面介绍跳跃表节点的层属性是一个数组,包含多个指向下一个同一层级的指针,而每个节点层的大小则是根据幂次定律(power law) 来生成的。在创建一个跳跃表节点的时候,程序都会根据幂次定律随机生成一个介于 1 到 32 之间的值作为 level 数组的大小,这个规则是越大的数出现的概率越小,它有一种计算方式,层数每加 1,出现的概率都是前一个数字的 0.25。
2023-09-18 22:16:24
154
原创 Redis数据结构五之整数集合
整数集(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现。整数集合可以保存类型为 int16_t,int32_t,int64_t 的整数值,并且保证集合中不会出现重复元素。
2023-09-15 23:37:45
109
原创 Redis数据结构四之字典和哈希表
字典在 Redis 中应用相当广泛,在介绍字典之前,先来介绍一下字典、哈希表、哈希表节点的几个概念。其中,的底层就是一个哈希表student 下的就是组成哈希表的各个哈希表节点对于 Redis,哈希表和哈希表节点两个数据结构就可以实现我们对 key-value 数据的操作,但是随着哈希表保存的键值对增加或者减少,我们就需要对哈希表进行扩展或者收缩操作,因此就额外引入了字典结构来做一些额外的辅助操作,具体的实现我们接下来介绍。
2023-09-13 17:58:52
136
原创 Django笔记四十四之Nginx+uWSGI部署Django以及负载均衡操作
上一篇笔记中有介绍直接使用 uWSGI 作为 web 服务器来部署 Django,这一篇笔记介绍如何使用 Nginx 来部署。使用 Nginx 来部署相当于在 uWSGI 外面又嵌套了一层,uWSGI 作为内部服务被隐藏起来,这时候 Nginx 起的作用是反向代理。在这里,Nginx 的安装操作就不赘述了,网上都可以找得到如何操作,这里只讲相关的配置操作。
2023-04-23 19:50:35
301
原创 Redis基础命令汇总,看这篇就够了
本篇笔记将汇总 Redis 基础命令,包括几个常用的通用命令,和各个类型的数据的操作,包括字符串、哈希、列表、集合、有序集合等在内的基本操作。
2023-04-18 22:15:28
241
原创 Django笔记四十三之使用uWSGI部署Django系统
目前部署Django的方式一般是 Nginx + uWSGI + Django,这一篇笔记将会提供使用 uWSGI 部署 Django 的示例及其详解
2023-04-08 23:09:19
670
原创 Django笔记四十二之model使用validator验证器
验证器是我们在model或者form表单里对数据进行校验的一种操作,通过定义验证内容,我们在保存数据前可以自动对保存的数据进行合法性校验
2023-04-02 11:27:02
800
原创 Django笔记四十一之Django中使用es
首先我们要定义一下 es 的连接配置,这个在之前 Python 连接 es 的操作中有过介绍。
2023-03-26 20:18:26
872
1
原创 Django笔记四十之运行Django环境的python脚本
这一篇笔记介绍如何在 Django 中运行脚本。假设说我们要实现一个功能,需要获取 blog.models.Blog 这张表里的总数且使用 print() 输出。如果代码逻辑很短,且是一次性执行的操作,我们可以在系统的根目录下使用在 shell 中操作实现。但是如果这个需求是一个很长的逻辑,且需要可以重复执行,那么应该如何操作呢?首先,我们需要可以用到 Django 里的 Blog model,然后使用 model 的方式来进行查询。我们可以将其写入一个文件,每次都使用 shell 来调用。
2023-03-22 22:21:40
980
原创 Django笔记三十九之settings配置介绍
这一篇笔记介绍 Django 里 settings.py 里一些常用的配置项,这些配置有一些是在之前的笔记中有过介绍的,比如 logging 的日志配置,session 的会话配置等,这里就只做一下简单的回顾,有一些是之前没有介绍过的就着重介绍一下。
2023-03-21 23:06:00
535
原创 Python连接es笔记四之创建和删除操作
这一篇笔记介绍一下索引和数据的创建和删除。其实对于索引来说,如果可以接触到 kibana 的话,可以很方便的在界面进行操作,这里简单介绍一下如何使用代码来操作索引的创建和删除。
2023-03-14 17:07:18
571
原创 Django笔记三十六之单元测试汇总介绍
本篇笔记会包括单元测试的编写方式,单元测试操作流程,如何复用数据库结构,如何测试接口,如何指定 sqlite 作为我们的单元测试数据库等
2023-02-05 17:23:08
478
1
原创 Django笔记三十五之admin后台界面介绍
假设说我们想要实现一些批量执行的操作,比如选中列表页某些数据,将 is_published 字段批量更新成 True(即已发布),我们就可以用到 actions 来实现。使用 admin.action 作为装饰器来装饰一个函数,然后将函数名称作为值放入 actions 列表中,在这里 queryset 参数即为页面选中的数据,它是一个 queryset 类型,所以这里可以直接进行 update() 操作。
2023-01-29 23:32:14
804
原创 Python连接es笔记二之查询方式汇总
s = Search(using = "default") . index("exam") s = s . query("match" , name = "张三丰")query() 中接受两个参数,第一个是字段查询的方式,比如这里是 match,也可以是 term,这个依照查询的目的来替换。第二个则是查询的字段与值,比如这里是查询的 name 字段为 “张三丰” 的数据。
2023-01-16 22:50:59
1075
原创 Python连接es笔记一之连接与查询es
有几种方式在 Python 中配置与 es 的连接,最简单最有用的方法就是定义一个默认的连接,如果系统不是需要访问多个集群,最建议的方式就是使用方法创建连接,然后所有的操作都会自动使用这个连接。
2023-01-10 21:54:32
1927
原创 Django笔记三十四之分页操作
这一篇笔记介绍一下如何在 Django 使用分页。主要用途是列表数据的切割,比如说有 3000 条用户数据,前端需要一个列表接口用于展示这些数据,但是一次性展现这么多数据不合适,所以打算用分页的方式来操作。比如一页20条数据,前端通过按钮控制 page_num 和 size 参数用于后端返回数据。
2023-01-06 22:38:17
514
原创 Django笔记三十三之缓存操作
这一节介绍一下如何在 Django 中使用 redis 做缓存操作。在 Django 中可以有很多种方式做缓存,比如数据库,比如服务器文件,或者内存,这里介绍用的比较多的使用 redis 作为缓存。其中,redis 的安装我们在 celery 系列笔记的第一篇已经介绍过了,可以直接使用 docker 来操作,这里不做赘述了。
2022-12-30 23:53:08
287
原创 es笔记七之聚合操作之桶聚合和矩阵聚合
桶(bucket)聚合并不像指标(metric)聚合一样在字段上计算,而是会创建数据的桶,我们可以理解为分组,根据某个字段进行分组,将符合条件的数据分到同一个组里。桶聚合可以有子聚合,意思就是在分组之后,可以在每个组里再次进行聚合操作,聚合的数据就是每个组的数据。
2022-12-29 21:35:20
1447
1
原创 es笔记六之聚合操作之指标聚合
类似于分类分组,按照某个 key 将符合条件的数据都放到该类别的组中计算一组文档的相关值,比如最大,最小值根据多个 key 从文档中提取值生成矩阵,这个操作不支持脚本(script)将其他聚合的结果再次聚合输出聚合是支持套娃(嵌套)操作的,你可以在聚合的结果上接着进行聚合操作,es 是不限制聚合的深度的。
2022-12-27 22:21:50
2259
原创 es笔记五之term-level的查询操作
官方文档上写的是 term-level queries,表义为基于准确值的对文档的查询,可以理解为对 keyword 类型或者 text 类型分词为 keyword 的字段进行 term 形式的精确查找。
2022-12-22 19:59:36
378
原创 es笔记四之中文分词插件安装与使用
前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要使用中分分词。这里我们介绍一下如何安装中文分词插件。可以发现是无法搜索到结果的。其中,_doc 后面的 16 是我们要查询的数据的 id,fields 后面跟着的要查看的分词结果的字段名。可以看到 一个苹果 这个字符串,被挨个分成了四个。然后我们来安装一下中文分词的插件。
2022-12-19 01:57:24
361
原创 es笔记三之term,match,match_phrase 等查询方法介绍
首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text。keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理text 存储数据的时候会对字符串进行分词处理,然后存储。而对于查询方法, term 是精确查询,match 是模糊查询。接下来我们用几个例子,来分别表达下这两种类型的字段,使用 term,match,match_phrase 等搜索的情况。
2022-12-19 01:56:40
7302
4
原创 es 笔记二之基础查询
这一篇笔记介绍 es 的基础查询。基础查询包括很多,比如排序,类似数据库 limit 的操作,like 操作,与或非等,对于这些操作,我会在介绍他们的用法之后加上对应的数据库 sql 便于理解。下面的操作都在 kibana 中实现。
2022-12-19 01:55:07
678
原创 es笔记一之es安装与介绍
首先,我们进入 kibana 界面,创建一条数据,然后根据这条数据来介绍 es 中结构的层级关系。点击 PUT 命令同行右边的三角形,或者按住 ctrl + enter 确认,我们就完成了一次数据的创建。通过数据的存储和查看,我们可以差不多了解 es 中数据的操作方式是 restful 风格的,可以通过 GET、PUT、POST、DELETE 的方式来实现数据的增删改查。{
2022-12-19 01:53:49
366
原创 Django笔记三十二之session的使用
django_session 表的单独获取查看操作一般在程序里不会出现,因为前后端都是通过 cookie 中 sessionid 直接获取到对应的数据,但为了以防万一,或者你对这张表有一些兴趣,这里额外介绍一下如何单独操作这张表里的数据。然后通过 session_key 来获取这条数据,比如 session_key 为。
2022-12-19 01:51:40
1325
1
原创 Django笔记三十一之全局异常处理
在这里,调用 process_exception() 函数之后,我们这里直接 return 了 response,还有一个 http 的状态码 status=500,这些信息都是可以自己拟定的,到时候和前端约定好,检测返回了某个状态码比如 500,然后就友好的显示某个报错弹窗信息,比如后台正在处理报错等。这里我们主要输出两个信息,一个是接口请求的路径,request.path,一个是报错信息 traceback_info,当然,这里我们还可以记录更多的信息,比如请求的用户信息,请求的参数等。
2022-12-19 01:50:15
463
原创 Celery笔记九之task运行结果查看
这一篇笔记介绍一下 celery 的 task 运行之后结果的查看。是将 task 的运行结果保存在 redis 的第二个数据库(数据库索引从0开始)。我们还可以将 task 的运行结果保存到 Django 的数据库,这一篇笔记将介绍如何查看 redis 和 Django 数据库中 task 运行的结果。
2022-09-12 21:27:30
2056
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人