Python
文章平均质量分 57
开发总结
时光不写代码
高级菜鸟努力飞
展开
-
Django 一个 model 注册多个 admin 表
在实际的使用场景中可能会出现某个数据表数据过多,但是Django 的 admin 后台对于大批量数据的查询速度一言难尽,比如我有一个用户表,但是大部分时间都只需要查询被禁用的用户,而直接进行查询所有用户实在是太慢了,所以我把用户表在 admin 后台展现为了两个表,一个展示所有的用户,一个只展示被禁用的用户。其实使用也能直接在一个表中根据用户的状态分组,但是当数据量和分组条件越来越多的时候查询速度会变的越来越慢。原创 2023-06-09 18:05:44 · 1460 阅读 · 1 评论 -
pandas、xlrd、openpyxl读取Excel性能对比
注: pyexcel和pyxlsb在读取Excel文件时,使用了比较特殊的方法,即使用了内存映射文件(Memory Mapped Files)的技术,可以将文件映射到内存中,然后通过内存直接访问文件内容,从而避免了大量的IO操作,提高了读取速度。同时,这种方法还可以避免一些内存限制,可以处理较大的文件。相比之下,其他库(如pandas、xlrd、openpyxl等)使用的是常规的读取文件方式,需要将整个文件读入内存中,再进行解析处理,因此可能会受到内存限制的影响,同时IO操作也会比较频繁,速度相对较慢。原创 2023-04-28 16:24:10 · 2075 阅读 · 1 评论 -
使用pandas、xlrd、openpyxl读取Excel
可以看出使用Pandas库的方法最为简单,而使用xlrd和openpyxl库则需要手动处理每一行的数据。需要注意的是,以上示例代码仅适用于Excel文件中只有一个工作表的情况。如果Excel文件中有多个工作表,需要指定要读取的工作表。如果需要处理大量的Excel文件,建议使用Pandas库,因为它能够自动处理大部分数据类型,并且具有优秀的性能。如果只需要处理少量的Excel文件,可以考虑使用xlrd或openpyxl库。原创 2023-04-28 15:14:00 · 1007 阅读 · 1 评论 -
Python列表自定义顺序排序
Python的自定义排序函数是非常有用的。它可以根据自己的需要对列表进行排序,而不是按照默认的升序或降序,可以更好地管理和处理数据。函数按升序对元素进行排序,但是有时我们需要对列表进行自定义排序。在这种情况下,我们可以使用。函数是一个非常有用的函数,它可以对列表中的元素进行排序。参数并传递一个自定义排序函数来实现自定义排序。在上面的示例代码中,我们定义了一个名为。参数表示指定的排序顺序。的函数来实现自定义排序。参数表示需要排序的值,而。原创 2023-04-24 17:50:21 · 776 阅读 · 0 评论 -
Python对列表保持原有顺序去重
【代码】Python对列表保持原有顺序去重。原创 2023-02-16 10:54:18 · 1436 阅读 · 0 评论 -
FastApi项目搭建
使用FastApi框架完成一个用户的创建、登录,虽然只有两个接口,其中包括了MySQL的配置和连接、orm工具和迁移工具的使用、中间件的使用等。原创 2022-10-19 16:01:28 · 4689 阅读 · 1 评论 -
Python使用Redis计算经纬度距离
Python使用Redis进行经纬度距离计算、指定范围查找地点。原创 2022-09-02 18:20:47 · 636 阅读 · 0 评论 -
LeetCode第118题:杨辉三角
题目给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]代码class Solution: def generate(self, numRows: int) -> List[List[int]]:原创 2022-02-21 12:10:31 · 8010 阅读 · 0 评论 -
LeetCode第136题:只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4代码class Solution: def singleNumber(self, nums: List[int]) -> int: # 方法一, 最慢解法 # for i in nums: # if nums.原创 2022-02-11 11:27:37 · 7465 阅读 · 0 评论 -
Python删除字符串中的符号
删除字符串中的空格可以使用字符串的lstrip、rstrip和strip方法。其中,lstrip方法用于删除字符串开头的空格,rstrip方法用于删除字符串结尾的空格,strip方法用于删除字符串开头和结尾的空格。删除字符串中的所有符号,只保留数字和英文字母可以使用正则表达式的sub方法。删除字符串中指定的符号可以使用字符串的replace方法。对应的unicode编码范围,可以根据需要进行使用。原创 2022-02-09 11:16:40 · 9595 阅读 · 0 评论 -
pytest基础教程
安装pip install pytest验证版本pytest --version使用def f(a): return a + 1def tests_f(): # 断言 assert func(1) == 2执行执行shell命令pytestdjango 使用安装pip install pytest-django使用在Django项目的根目录,也就是和manage.py同一级,创建配置文件pytest.ini。[pytest]DJANGO_S原创 2022-01-20 17:23:47 · 892 阅读 · 0 评论 -
python发送邮件
python发邮件方法import osfrom email.header import make_headerfrom django.core.mail import EmailMultiAlternativesdef send_mail(subject, text_content, from_email, to, file_path, html_message=None, cc=None): """ 发送带附件邮件函数 :param subject: 邮件主题 .原创 2022-01-19 11:19:42 · 588 阅读 · 0 评论 -
Python sorted()排序
dict 排序from operator import itemgetterdicts = {"key1": "1", "key2": "2", "key3": "3"}sorted_dict = sorted(phone_book.items(), key=itemgetter(1))print(dict(sorted_dict))# [('key1', '1'), ('key2', '2'), ('key3', '3')]多维 list 排序from operator import i.原创 2022-01-10 16:03:25 · 432 阅读 · 0 评论 -
Django自定义Admin后台报错提示和数据校验
Django的admin后台是个好东西,接业务需求,需要开发一个单独的修改用户名的页面,没有前端支持只能考虑使用admin了。数据模型from django.db import models class Order(models.Model): """ 订单表 """ serial = CharField(max_length=64, verbose_name="编号", help_text="编号")class User(models.Model): """ 用户表 ""原创 2021-12-17 21:09:53 · 2705 阅读 · 0 评论 -
Django跟某几个字段去重MySQL
当我们需要查询一个数据表中的数据时,有时候会出现重复的情况。为了去除这些重复的数据,我们可以使用 SQL 的DISTINCT关键字来实现去重操作。在 Django 中,官方文档提供了distinct方法用于去重,但是只支持 PostgreSQL 数据库,具体操作可以看。那么对于使用 MySQL 数据库的用户,应该怎么办呢?在这篇博客中,我将为大家介绍一些实现 MySQL 去重查询的方法。Bookbook_name表示书籍名称,category表示书籍类型,price表示书籍价格。原创 2021-10-19 17:45:02 · 2211 阅读 · 0 评论 -
python3.5项目升级3.8问题汇总
python3.5项目升级3.8问题汇总问题1:uwsgi问题1解决方案问题2:celery问题2解决方案问题1:uwsgi虚拟环境创建完成,但是在pip安装的时候遇到了第一个问题,uwsgi安装报错。Looking in indexes: http://mirrors.aliyun.com/pypi/simple/Collecting uWSGI Using cached http://mirrors.aliyun.com/pypi/packages/24/fd/93851e4a0767191原创 2021-10-15 16:56:58 · 1783 阅读 · 2 评论 -
Django—— F、Q查询
已有表from django.db.models import Model, F, Qclass Goods(Model): name = CharField(max_length=32, verbose_name='产品名称') surplus = IntegerField(verbose_name='余量') sales = IntegerField(verbose_name="销量") total = IntegerField(verbose_name="总量")原创 2021-09-02 18:20:30 · 556 阅读 · 0 评论 -
pyinstaller打包exe
安装pip install pyinstaller使用创建一个hello.py文件进入和hello.py同一级的目录,执行:pyinstaller -F hello.py查看文件目录,会发现多出来两个文件夹:build和dist打开dist文件夹,点击hello.exe即可执行注意事项打包成功后执行exe文件闪退问题执行太快:可能写的测试文件只是一个print,所以执行完直接退出了,加上time.sleep()即可看出效果代码崩溃:这个有多种可能,可以在终端进入dist文件原创 2021-06-17 23:09:11 · 986 阅读 · 0 评论 -
mac+pycharm+QT5配置
安装pyqt5pip install pyqt5安装pyqt5-toolspip install pyqt5-tools安装Qt方法1:直接下载对应版本安装 清华大学开源软件镜像站方法2:使用Homebrew,安装完成后注意日志里的文件路径,后面要用到brew install qtpycharm配置QtDesignerpycharm–settings->Tools->External Tools添加PyUIC固定参数:-m PyQt5..原创 2021-06-16 16:48:40 · 1698 阅读 · 4 评论 -
Python使用jsonpath_ng
是 Python 中一款解析和操作 JSON 数据的工具,它可以通过 JSONPath 语法来对 JSON 数据进行定位和提取,其用法类似于 XPath 语法对 XML 数据进行定位。原创 2021-06-10 14:22:26 · 4169 阅读 · 4 评论 -
tortoise-orm的迁移工具aerich
安装aerichpip install aerich创建models.py, 构建数据模型from tortoise import Model, fieldsclass User(Model): """ 用户基础信息 """ name = fields.CharField(max_length=24, description="姓名") id_no = fields.CharField(max_length=24, description="身份证号")创建.原创 2021-05-25 17:02:15 · 1551 阅读 · 0 评论 -
Python3使用RSA分段加密解密
import Cryptofrom Crypto.Hash import MD5from Crypto.PublicKey import RSA# 计算签名from Crypto.Signature import PKCS1_v1_5# 计算加密解密from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5from base64 import b64decode, b64encodeclass RsaUtil(object):原创 2021-04-15 13:46:21 · 1329 阅读 · 0 评论 -
Python合并pdf方法
1. 调用get_filename函数获取需要合并的所有PDF文件路径。 2. 通过调用PdfFileReader函数读取每个PDF文件,并获取每个PDF文件的总页数。 3. 通过循环将每个PDF文件的每一页添加到输出对象output中。 4. 通过调用PdfFileWriter函数将合并后的所有PDF文件保存到目标文件。原创 2021-03-29 14:31:52 · 1274 阅读 · 2 评论 -
pytest mock的使用
简单使用return_value返回固定的数据方法一,使用装饰器。import mockdef add(a, b): return a + b# 使用mock的return_value参数改变add返回的数据@mock.patch('add', return_value=10)def test_add(): print(add(1, 2)) # 10方法二,使用mock.path方法。import mockdef test_add(): with mock.原创 2020-12-30 22:58:52 · 1383 阅读 · 0 评论 -
mac MySQL升级后mysqlclient安装失败
今天无意间把MySQL升级到了8.0.22_1,然后pip安装mysqlclient发现会报以下错误: /usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -Dversion_info=(1,3,13,'final',0) -D__version__=1..原创 2020-12-29 17:38:59 · 483 阅读 · 1 评论 -
Django查看celery任务结果
异步任务执行的时候对于用户来说总是会出现再次尝试,第二次查看结果的时候如果能查到任务结果如何那就可以减少好多不必要的查询和重试。Django中可以使用django_celery_results,但是django_celery_results查不到celery_taskmeta表中的数据,只能查询安装了该库以后的任务。所以推荐使用以下方法,简单易懂,可以直接查celery_taskmeta表的数据。from celery.result import AsyncResult# task_id 为开启异步任务原创 2020-12-28 15:16:53 · 3300 阅读 · 1 评论 -
Django ORM性能优化之count和len方法的选择
接下来我将从源码层面分情况和应用分析我们在计算queryset数据集时是用orm的count函数计算长度还是用len函数计算数据集长度。首先,我们知道ORM查询queryset数据集是惰性查询的,只有使用到数据集时,ORM才会真正去执行查询语句,然后ORM会把查询到的数据集缓存到内存中,下次我们使用数据集时是从缓存中取值的。这就是ORM的惰性查询机制和缓存机制,还不清楚可以找相应的博客了解其概念,首先理解这两点我们便能更好地理解接下来的场景及应用。场景一:我们写了ORM查询语句,然后querys转载 2020-08-11 14:14:18 · 1151 阅读 · 0 评论 -
Python列表统计重复元素
Python列表查找重复元素的几种方法原创 2020-07-24 14:52:16 · 4522 阅读 · 0 评论 -
python3数据MD5加密
对字符串加密:import hashlib, base64s = "0123456789"h = hashlib.md5()h.update(s.encode('utf-8'))md5_value = base64.b64encode(h.digest()).decode('utf-8')print(md5_value) # 'eB5eJF1ptWaXm4bijSPyxw=='对文件加密path = os.path.join(file_path, file_name)file = o.原创 2020-07-21 10:18:00 · 312 阅读 · 0 评论 -
celery 常用执行命令
celery 常用执行命令详解执行命令celery -A test-1.celery worker -n name-1 --loglevel=info --max-tasks-per-child 500 --autoscale=4,1 -Q q-1常用参数:参数说明-A / --app要使用的应用程序实例-n / --hostname设置自定义主机名...原创 2020-04-29 17:47:26 · 4844 阅读 · 1 评论 -
Django makemigrations:'NoneType' object has no attribute 'is_relation',报错原因定位
问题平时在生成migrate文件时,如果出现问题,一般都会显示失败的原因,造成失败的是哪个字段,但是也有可能会出现这种情况: File "/venv/lib/python3.5/site-packages/django/db/migrations/operations/fields.py", line 148, in state_forwards delay = not old_...原创 2020-01-19 19:41:08 · 1845 阅读 · 0 评论 -
Django models存储json格式的数据
JSONField官网介绍用于存储JSON格式数据的字段。在Python中,数据以其Python本机格式表示:字典,列表,字符串,数字,布尔值和None。一个可选的JSON格式类序列化的数据类型不是由标准JSON序列(支持的datetime,uuid等)。例如,您可以使用 DjangoJSONEncoder该类或任何其他json.JSONEncoder子类。JSONField使用...原创 2020-01-19 19:39:11 · 5103 阅读 · 0 评论 -
Django rest framework动态校验字段类型
有了动态返回字段怎么能没有动态的校验字段!原创 2020-01-15 14:45:54 · 1235 阅读 · 1 评论 -
python使用celery-group优化大数据处理速度
celery-group的使用配置为子任务配置独立的celery进程from kombu import Exchange, Queuedefault_exchange = Exchange('default', type='direct')concurrency_exchange = Exchange('concurrency', type='direct')app.conf.t...原创 2019-12-19 20:45:29 · 1720 阅读 · 0 评论 -
DRF动态获取字段
项目名称drf-dynamic-fields项目描述提供了一个mixin,用于serializer,实现动态配置返回字段的效果。在获取数据的API的时候,在URL中加入一个查询字段fields,用来过滤返回数据的字段,减少网络传输的数据。github地址:https://github.com/dbrgn/drf-dynamic-fields安装pip install drf...转载 2019-12-02 14:38:18 · 1451 阅读 · 0 评论 -
python使用xlwt、xlsxwriter生成Excel
使用xlwt示例def excel_(headers, result, file_name, horizontal=True): f = xlwt.Workbook() default_easyxf = xlwt.easyxf(num_format_str='0.00') sheet1 = f.add_sheet('sheet1') # 标红加粗 #...原创 2019-11-21 14:12:46 · 1676 阅读 · 2 评论 -
DRF修改权限、用户认证方式
修改权限、用户认证方式在settings中全局配置REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthe...原创 2019-10-30 19:29:25 · 1074 阅读 · 0 评论 -
Django ORM的几种时间筛选方式
时间筛选方式直接使用__year、__month、__day、__week_day年User.object.filter(start_time__year=2019)月User.object.filter(start_time__month=10)日User.object.filter(start_time__day=10)星期几User.object.fi...原创 2019-10-15 20:33:51 · 7420 阅读 · 0 评论 -
smtplib.SMTPDataError引发UnicodeEncodeError
问题在测试代码的时候发现了一个错误UnicodeEncodeError: 'latin-1' codec can't encode characters in position 1017-1018: ordinal not in range(256),各种转码也没有解决问题。后来一层层的断点,终于发现原因,竟然是在发邮件的时候超额了smtplib.SMTPDataError: (552, b'...原创 2019-05-21 16:49:50 · 1157 阅读 · 3 评论 -
Python、HTML、JS练手项目:每日一词New Tab
在网上看到了Google的New Tab插件,想想自己的英语那么差,找个可以学单词的New Tab多好,结果大神们英语都很好,并没有找到,只有一个类似的还是日语,怎么办?既然找不到就自己写一个吧。开始动手写先确定一下功能1.关键需要有一个搜索框2.每天更新一个单词,单词可以点进去查看详情3.页面背景要找一些高清壁纸4.背景随机显示5.原来是定义为一个静态页面的,但是单词这个有点问...原创 2019-05-08 11:40:03 · 645 阅读 · 0 评论