
python
文章平均质量分 53
vv安的浅唱
致力于撰写每一篇跑通过实例的博客,更多文章信息可搜索关注【Hunter后端】
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Django 之model 对数据字段进行截取然后返回
比如说有Question 这个model 有个字段名为 field_1,我们需要对该字段数据进行截取,从该字段的 第三位开始,往后截取四个字符,处理方法如下:from django.db.models.functions import Substr Question.objects.annonate(new_field=Substr(‘field_1’, 3, 4)).values("new_field")注:截取的下标是从 1 开始的,从第几位开始截取,Substr 的第二个参数就是几,第三个参数原创 2022-01-01 15:13:24 · 1105 阅读 · 0 评论 -
Django之model 对数据排序,等于某个特殊值的数据置顶返回
有一个需求,比如说 某个 model Question 下有一个字段, priority,这个字段是个 int 型数据,然后获取筛选出来的数据需要 按照 priority 倒序排序,但是 priority = 3 的数据要置顶。这种使用方法用 mysql 的语法很好解决:order by priority = 3 desc但是用 Django 自带的 model 的方法,可能是搜索的关键词不对,用中文搜索了好久没有结果,然后尝试使用 英文的关键词搜索:django order_by field eq原创 2022-01-01 14:43:20 · 1664 阅读 · 0 评论 -
Django 之 redis使用哨兵模式
redis 使用哨兵模式的方法在以前的博文中有介绍过,那么如果我们 Django 的系统用 cache 和 celery 连接的 redis 是哨兵模式,使用方法是怎么样的呢?一起来看一下 demo 吧。注意:celery 仅在 4.2 版本以后才支持 redis 使用哨兵模式。以下是用到的 依赖的版本情况:celery==4.2.0Django==2.1django-redis==4.10.0django-sentinel==0.1.0redis==3.2.0基础信息master n原创 2021-01-31 14:07:20 · 2064 阅读 · 0 评论 -
Python 之 使用 locust 进行压力测试
如果需要对接口进行接口进行压力测试,在 python 中有一个依赖 locust 可供使用。对接口进行压测,无非是并发之类的性能测试,那么 locust 提供了一个高并发的途径供我们进行压测。这片博客,记录的点主要有如下几点:基本使用方式、登陆后测试接口、GET 和 POST 方法的自动调用。1、基本使用方式我这边安装的 locust 版本是 1.4.1,不同的版本使用差别还是挺大的,可以查阅一下官方文档。以下是一个小 demo:# locustfile.pyfrom locust impor原创 2021-01-31 00:27:04 · 1552 阅读 · 1 评论 -
Python 之连接使用 oracle
此篇文章主要是记录一下第一次使用 Python 的的库连接使用 oracle。如下是目录:安装下载依赖 cx_Oracle下载安装客户端及配置环境连接方式插入数据简单基本语句1、安装依赖 cx_Oracle使用 pip install 的命令下载这个依赖,使用国内镜像源会快一点,所以使用如下语句,指定镜像地址:pip3 install cx_Oracle==6.4.1 -i https://mirrors.aliyun.com/pypi/simple/2、下载安装客户端及配置环境原创 2020-08-09 23:08:54 · 562 阅读 · 0 评论 -
Python 之三行代码实现图片的灰度化
什么时候我也会起这种烂俗的标题?(狗头昨日清明,举国哀悼,许多网页都都置成了灰色,在 HTML 里面貌似给 CSS 里面加个设置就可以实现。微信里面,也有很多人把头像换成了灰色,那么怎么用 Python 来实现把一个图片变成灰色这个功能呢?图片是由一个个的像素点构成,而每个点的颜色的构成是由 RGB 来实现。最基础的做法就是遍历读取目标图片的每个像素的 RGB 值,然后将其线性映射到灰度的...原创 2020-04-05 13:17:30 · 1906 阅读 · 0 评论 -
Python 之将数字变成带逗号的千分位
一个很长的数字,有时候要把它变成千分位的数字,就是以三位数为一个分隔用逗号分开,比如 123,452,354 酱紫。在 Python 里实现方法如下:format(12324232345, ',')Out[2]: '12,324,232,345'**注意:**输入要为 整型或者浮点型,不能是字符串类型。...原创 2020-02-29 11:36:05 · 13242 阅读 · 1 评论 -
Django 之设置静态文件夹
建立好一个 Django 的项目以后,需要设置一个静态文件的访问地址。在 settings.py 文件中,有一行:这个是系统静态文件访问地址的 路由,也就是说在系统配置以后要访问系统的静态文件,就要加上这个。接下来在这一行的下面加上这一行:STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"),]然后在 Django 系...原创 2020-02-17 00:58:46 · 748 阅读 · 0 评论 -
Python 之使用 matplotlib 画条形图、折线图、饼图以及散点图
以下展示一些用 matplotlib 画条形图、折线图、饼图以及散点图的示例,其中类似于图例、坐标轴名称,标题等的显示方法是一样的,不另做介绍。0、引入模块import randomimport matplotlib.pyplot as pltimport matplotlib#引入显示中文的黑体,如果中文显示乱码,解决方法参见我的上一篇博文matplotlib.rcParams['f...原创 2020-02-14 03:13:21 · 2217 阅读 · 0 评论 -
Python 之使用 matplotlib 画图中文显示乱码
在 Ubuntu 18.0 系统上使用 matplotlib 画图,其中在添加中文作为标题或者坐标轴名称时,显示为乱码,如下所示:这是因为在 Ubuntu 系统上默认没有中文字体。所以需要手动下载一个字体,并且添加到 matplotlib 库的字体路径下。1、下载字体比如我在网上下载的是 黑体:2、找到 matplotlib 字体所在的位置进入 Python 的交互界面,输入如下命令...原创 2020-02-14 00:37:27 · 1863 阅读 · 0 评论 -
Python 之将小段视频合并
在手机上,或者电脑端,有时候我们看一个视频,网站为了保证页面流畅,总是以 hls 直播视频流的方式将一整段视频切割成一小段一小段的返回给前端。而我们如果有下载的需求,并且通过该整个视频扒下来,会发现获取到的都是一个个小的视频片段(很多小电影网站都是如此)。作为一个强迫症患者,我会希望将其整合成一个完整的视频,这是需求。在网上搜索了一些资料之后,于是确认了使用 moviepy 这个第三方库作...原创 2020-02-12 02:34:21 · 3587 阅读 · 4 评论 -
Python 之 apscheduler 定时任务
之前写过一篇博文,是用的 Linux 上自带的 crontab。Linux定时任务——crontab在 Python 里,也有一个用于写定时任务的依赖,apscheduler,我一般是将其嵌入到 Django 里面做定时任务。以下是使用语法:每隔一段时间运行某函数from apscheduler.schedulers.background import BackgroundSchedule...原创 2020-02-06 21:26:56 · 450 阅读 · 0 评论 -
Python 之月份加一
这是一个小功能,一个时间点,比如2月15号,我们需要根据这个日期往后加一个月,怎么办,一般来说,可以使用 datetime 这个模块。datetime.datetime.strptime('2020-02-15 00:00:00') + datetime.timedelta(days = 31)以上这个操作是在原日期往后加上31天,但是这个操作,有个问题,比如当月只有30天,或者2月,碰上平...原创 2020-02-06 19:47:15 · 5565 阅读 · 0 评论 -
Django 之filter的或操作——Q
在 Django 中,使用 filter 查询操作,如果是 与 操作,那么两个 filter 连用,或者放到同一个括号里就行,比如:Book.objects.filter(id__gte=5).filter(id__lte=10)或者:Book.objects.filter(id__gte=5, id__lte=10)如果是想要 或 操作,比如 id <= 5 并且 id >...原创 2020-02-06 12:55:39 · 5122 阅读 · 2 评论 -
Python 之对 Excel 表格进行读写
Python 操作 Excel 表格的依赖有 xlwt、xlrd、xlsxwriter。其中,读相关的依赖是 xlrd,写操作的的依赖是xlwt 和 xlsxwriter。xlrdxlrd 模块是读取 Excel 的依赖,以下是 xlrd 的相关语法:import xlrdpath = '/home/user/test.xlsx'#打开一个 xlsx 文件,workbook就是这个 ...原创 2020-02-05 19:03:06 · 238 阅读 · 0 评论 -
Python 之使用 celery 实现消息队列,异步函数
关于celery 的实现消息队列,以及异步函数的使用有很多用途,比较常见的一个用途就是前端向后端发起一个请求,后端完成这个请求需要较长的时间,可以先向前端返回结果,然后将这个实现的过程存储,在后端慢慢实现。那么这个过程,就可以使用 celery 来实现。技术框架:在这里用到的 Python 的后端框架是 Django。celery 可以使用的中间件有 Redis,rabbitmq 等,这里...原创 2020-01-31 18:43:19 · 837 阅读 · 1 评论 -
Python 之使用模板生成周报
使用模板生成周报的步骤:1、使用 docx 库编辑模板文档2、将段落中的关键词替换成每周需要改变的参数3、将统计内容插入表格中4、生成统计图并插入模板文件5、将模板文件另外输出本篇博客会涉及以下几个知识点:1、使用 docx 依赖编辑模板文件2、如何替换 word 文档中的关键字3、在 word 中添加图片4、将统计内容插入表格本篇博客会涉及到的依赖库:docx1、使用 ...原创 2019-12-02 23:19:38 · 2571 阅读 · 2 评论 -
Python 之文件夹的操作
关于 Python 操作文件夹有两个模块介绍,一个是 os,一个是 shutil。涉及功能有,创建文件夹,创建多级文件夹,删除空文件夹,删除非空文件夹。1、创建文件夹import ospath = '/home/user/test'os.mkdir(path)以上代码的功能是在目录 /home/user/ 下创建文件夹 test2、创建多级文件夹import ospath = ...原创 2019-11-03 18:25:38 · 222 阅读 · 0 评论 -
Django 之将 ORM 语句转化成原生sql 语句
使用 Django 有个很方便的东西就是它的 ORM 查询语句,但是有时候碰上一些复杂的语句,或者新用到的功能,比如 distinct, sum。我们想要知道使用 ORM 查询返回的结果是不是正确,我们可以将之对应的 MySQL 语句打印出来印证一下。有两种方法,如果是比较简单的查询语句,可以使用以下方法:ArticleInfo.objects.filter(id = 1).query.__...原创 2019-11-03 13:08:43 · 3321 阅读 · 0 评论 -
Python 之用 BeautifulSoup 爬取网页简单示例
之前用于 Python 爬过一些网页,都写在程序里一直没有整理,最近工作上要用到一些新闻,爬取百度新闻的一些信息,于是将用 BeautifulSoup 爬取网页的一些步骤整理下。目的爬取百度体育新闻的几个板块信息,如NBA新闻,国内足球,国际足球等,链接是 http://news.baidu.com/sports。分析我用的是 Chrome 浏览器,按 F12 打开页面的请求,可以发现该页...原创 2019-11-03 01:42:27 · 5191 阅读 · 1 评论 -
Python之将日期 yyyy/mm/dd 格式转化为 yyyy-mm-dd
有时候从别处获取到数据的日期数据格式不统一,比如不是我个人常用的 2019-10-22这种以横杠连接的格式,需要将其转化一下。转化方式如下:import datetimedatetime.datetime.strptime('2019/10/22', '%Y/%m/%d').strftime('%Y-%m-%d')同理, 如果源数据连接的方式不是 / 是 点 “.” 或者其他符号,也可以...原创 2019-10-22 22:43:33 · 16129 阅读 · 1 评论 -
Python之使用多个分割符分割字符
在使用 Python 处理字符串的时候,有时候会需要分割字符。分隔符比如下划线 “_”,比如 “.”之类的。一个分隔符比如对于文件名 20191022_log.zip,我们想要获取前面的日期。如果日期格式固定,对于这样的字符串我们当然可以使用索引进行切割。当然也可以使用字符串的内建函数 split().结果返回的是一个列表。如果分隔符不在字符串之列,那么返回的也是一个列表,不过元素...原创 2019-10-22 22:35:17 · 4025 阅读 · 0 评论 -
Python Cookbook 4.12 在不同容器中进行迭代
比如一个列表和一个集合,想要依次对其中的元素进行迭代,第一个想到的方法是,使用两个 for 循环,但是 Python 里提供了一个 itertools.chain() 函数,可以直接迭代。for item in chain([1,2,3], {'a', 'b', 'c'}, 'dfer'): print(item) 123cabdfer如果使用for i...原创 2019-09-22 15:43:42 · 144 阅读 · 0 评论 -
Python Cookbook 4.14 扁平化处理嵌套型的序列
首先看看什么是嵌套型的序列,比如:[1,2, [4,4,5, [6,7,8]],4,5]列表中又嵌套了一个列表,这就是嵌套型的序列。什么是扁平化处理呢?就是在获取元素的时候,能够像一个普通列表一样输出,如下:[1,2, 4,4,5, 6,7,8,4,5]使用到的语法是 yield from 。items = [1,2, [4,4,5, [6,7,8]],4,5]from col...原创 2019-09-22 21:14:48 · 185 阅读 · 0 评论 -
Python Cookbook 4.15 对多个有序序列进行迭代
有两个有序序列,a = [1, 4, 7, 10]b = [2, 5, 6, 11]要对其进行有序迭代,以前的思路大概是,取两个临时变量,分别代表序列的第一个值,然后挨个比较大小,如果被取出去,变量取值接着往后走,直到某个序列所有值被取出来。在 Python 里有个 heapq.merge() 的函数,可以检查每个序列的第一个元素,比较大小,然后输出。import heapqa = ...原创 2019-09-22 21:27:22 · 189 阅读 · 0 评论 -
Python Cookbook 4.16 用迭代器取代 while 循环
在我们读取一个文件的时候,前面使用的方法是 next() 函数逐行读取,或者 f.read() 不加参数 直接读出所有数据。或者我们也可以使用迭代的方法进行读取。示例如下:path = './task.txt'f = open(path, encoding='utf-8')for chunk in iter(lambda:f.read(10), ''): print(chunk,...原创 2019-09-22 21:35:35 · 174 阅读 · 0 评论 -
Python Cookbook 1.13 通过公共键对字典列表排序
有一个列表如下,每一个元素都是字典,这些字典都有一个公共键,现在要根据这些公共键对这个列表进行排序,怎么办?rows = [{'fname': 'Brain', 'uid': 1003},{'fname': 'David', 'uid': 1002},{'fname': 'John', 'uid': 1001},{'fname': 'Big', 'uid': 1004}]如果是硬上,...原创 2019-04-20 14:53:07 · 174 阅读 · 0 评论 -
Django 之在系统根目录下运行脚本使用 ORM
As we all know ,在用 Django 搭建的系统下,如果涉及到数据库的一些简单使用,我们可以使用到其自带的 ORM 来操作,十分简便。而要用到这个功能,除了直接在 views.py 文件中使用,如果我们要进行一些小的测试,比如某条语句,某个函数可以在系统的根目录下使用 Django 的 shell 操作(至少我是这样)。这个操作对于我们一些简单的函数测试提供了极大的便利,而如果我...原创 2019-03-23 01:57:29 · 448 阅读 · 0 评论 -
Python Cookbook 4.11 同时迭代多个序列
对于两个,或多个具有相同个数的列表,我们想要同步,对应地获取其中的元素,可以用到 zip 函数。list1 = [1, 2, 3]list2 = ['a', 'b', 'c']list3 = ['x', 'y', 'z']for item1, item2 in zip(list1, list2): print(item1, item2) 1 a2 b3 c如果是...原创 2019-09-22 14:58:24 · 157 阅读 · 0 评论 -
Python Cookbook 4.9 迭代所有可能的组合或者排列
关于 Python 里的排列与组合,会用到 itertools 的如下几个函数:permutations, combinations, combinations_with_replacement。items = [1, 2, 3]排列如果我们需要返回所有元素的排列,使用方法如下:from itertools import permutationsfor p in permutation...原创 2019-09-22 14:34:25 · 218 阅读 · 0 评论 -
Python Cookbook 4.8 跳过可迭代对象中的前一部分元素
在读取文件的时候,有时候会在开头有些注释掉的行,用来说明文件内容之类的,在用 Python 读取的时候,可以在读取之后,通过检查某些特征进行选取。比如开头是 # ,如果是开头是这个,可以舍弃,continue 读取下一行,在这里介绍一种方法, itertools.dropwhilefrom itertools import dropwhilewith open(path) as f: ...原创 2019-09-21 23:48:05 · 155 阅读 · 0 评论 -
Django 之发送邮件
有这样一个功能需要实现:在 Django 布置的系统里,有时候运行到某个功能的时候会报错,我们可以使用 try except 来避免这种报错,让程序继续运行下去,但有时候我们会想要捕获这种错误,并且实时的告知我们,我想到一个功能就是通过发送邮件的方式。Django 里有一个模块:from django.core.mail import send_mail可以很方便地实现我们需要的功能。如...原创 2019-04-08 23:14:32 · 481 阅读 · 0 评论 -
Python Cookbook 1.5 优先级队列,1.6 字典中将键映射到多个值上 1.7 让字典保持有序
1.5 优先级队列这一节讲的是通过使用 heapq 模块建一个类实现优先级队列, 然后进行 push 和 pop,看到这里,如果熟悉 deque 模块的话,马上就可以现代高 queue 里有个方法可以直接使用优先级队列, PriorityQueue,想了解可以直接查询官方文档,这里不做赘述。1.6 在字典中将键映射到多个值上看到这个标题就可以想到 collections.default() ...原创 2019-04-07 12:19:55 · 226 阅读 · 0 评论 -
Python Cookbook 1.4 找到最大或最小的 N 个元素
当我们需要在一个集合,或者列表中找到最大或最小的 N 个元素,这里我们用到的是 heapq 函数。1、列表heapq 模块中有两个函数 nlargest 和 nsmallest,可以接受一个数字 n 和列表作为参数,表示取其中最大或最小的 n 个数字。返回的是一个已经排好序的列表,包含最大或者最小的几个元素。2、字典列表heapq 还可以通过添加 key 参数作用于字典等更复杂的数据结...原创 2019-04-07 00:58:43 · 226 阅读 · 0 评论 -
Python Cookbook 1.2 从任意长度的可迭代对象中分解元素
最近在啃 Python Cookbook 这本书,在里面有一些语法知识点虽然以前用到过,但是在这本书里会有一个详细的介绍,在接下来的博客里面会进行一系列的摘抄,并有一些会附上我的看法。另外,推荐这本书,因为我觉得值得每个学习 Python 的人仔细研读一下。当我们需要从一个列表或者字符串中取出某一些固定的值,其余的数据统一划分为一个列表,或者废弃,可以使用到 * 这个参数,使用方法如下: L...原创 2019-04-07 00:34:40 · 160 阅读 · 0 评论 -
Django 之 models 里的 auto_now 和 auto_now_add
当我们在 Django 系统里定义 models.py 文件时,有时候会涉及到 DateTimeField 或者 DateField 或者 TimeField,分别对应的是 MySQL 里面的几个关于时间的字段。这些字段用于我们保存或者更新某条数据时做的时间的一个标记,那么其中就会涉及到两个参数,auto_now 和 auto_now_add。如下所示:created_time = Date...原创 2019-03-27 23:13:37 · 810 阅读 · 3 评论 -
Django 之自定义头部信息
当我们使用 Django 来搭建一套网页系统,有时候我们会需要在网页里加入一些信息,比如宣示版权之类的信息,而如果在每一个需要渲染的页面都加上这些信息,会比较麻烦。而在 Django 里有一个中间件 middleware 可以帮助我们实现这个功能而不需要在每一个返回的 HTML 页面都手动加上。使用方法如下:1、settings.py 里面加上中间件比如我们在创建完一个系统以后,系统的名称...原创 2019-03-16 23:03:36 · 2240 阅读 · 0 评论 -
Python 之 enumerate 遍历列表同时获取元素及下标
对于一个 Python 开发者来说, Python 里面的 for 循环是很熟悉的,虽然没有其它语言里类似于for (i=0; i&lt;ln; i++)的这种操作,但是对于列表的循环有一种比较好用的方式,那就是:for item in List: print(item)这种方法可以直接循环取出列表的每一个元素,但是会有一个缺点,就是虽然取出了元素,但是不知道取出的元素所对应的下标是...原创 2019-03-16 21:51:36 · 6563 阅读 · 0 评论 -
Django 之禁止特定的 IP访问系统
有时候我们上一些网站,或者用爬虫技术去爬,使用的次数很频繁,会被网站记录加入黑名单,当我们再次访问的时候会被提示,你不能访问该网址。那么这个技术在 Django 里面如何实现呢?我搜索了一些方法,找到的资料不多,有一些可能有效,但是没有可以直接运行 demo,那么这里就提供一种使用中间件的 demo,亲测有效。自定义一个 middleware.py 文件,这个文件要在 Django 的 se...原创 2019-03-19 23:36:16 · 4066 阅读 · 0 评论 -
Python 之使用 pyinstaller 将程序打包成可执行的 exe 文件
Python 是一种很好的编程语言,可以为我们的工作、生活提供很多便利操作,比如说做一些小的工具啊、爬取一些需要的数据啊等等。曾经下载过很多电影,电视剧,其中很多都是没有字幕的,所以每次都要去字幕网上搜索、选择、下载,有时候下载下来,因为版本不同和字幕时间对不上,觉得特别麻烦,所以就用 Python 写了个脚本输入名称自动下载字幕,可以选择下载字幕的数量到指定文件夹。后来同学找我要这个脚本,但...原创 2019-01-09 23:00:21 · 496 阅读 · 1 评论