Python学习笔记(十一)---QuerySet、pt-fingerprint
1.Django filter()查询指定字段,返回结果直接转List的方法
Django 通 filter()方法 查询数据时常会需要搜索数据库记录中某一字段的值,如果需要把此字段值返回值 转变成List 类型直接使用。
可以通过values_list(“字段名”,flat=True)来实现来协助实现。
示例:
取出题库中指定ID号的试题,排除试题中密级为1的试题。l_newList为前台传来的选中的试题ID,要把这些ID中密级为1的ID号排除,查询到所有密级不为1的试题ID,存放在List中。
l_QB=list(QuestionBank.objects.filter(~Q(qsecrettype=1) | Q(qsecrettype=None),id__in=l_newList).values_list("id",flat=True)) print(l_QB)
返回结果
[278, 280, 281, 282]
转载:https://zhuanlan.zhihu.com/p/78193907
2. Django中get()和filter()返回值区别详解
get(),返回与给定查找参数匹配的对象,该对象应采用字段查找中描述的格式。
注意的事(1)返回是对象,可以直接用点操作进行字段取值;(2)如果记录不存在或不是一个,它会报错。
filter(),返回包含与给定查询参数匹配的对象的查询集(对象组成的查询集合)。结合使用exclude()方法,排除某些返回结果;使用order_by()方法,对不同的字段进行排序。
orders = Orders.objects.filter(id=20190003) print(order)
返回结构体如下
<QuerySet [<Orders:Orders object>,<Orders:Orders object>,<Orders:Orders object>]>
前面的QuerySet 是告诉我们这个是一个查询集,真正的查询集内容是列表[]里面的东西,<>表示查询集的范围。[]中的Orders同理。
如果是只有一笔数据即
<QuerySet [<Orders:Orders object>]>
get()方法所获得结果,与filter() 返回结果order[0]相等。
注意点:django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
完整内容:https://www.yzlfxy.com/jiaocheng/python/396895.html
3.pt-fingerprint 【此为Mysql 内容与Python无关】
pt-fingerprint是Percona Toolkit工具集的其中一个,可以将SQL语句格式化为抽象化形式,可以用于数据脱敏等场景、SQL慢查询聚合分析、SQL日志审计等。
基本用法
pt-fingerprint [OPTIONS] [FILES]
参加参数选项
--match-embedded-numbers:例如,把catch22替换为?,而不是默认地把catch22替换为catch? --match-md5-checksums:例如,把fbc5e685a5d3d45aa1d0347fdb7c4d35替换为?,而不是默认地把fbc5e685a5d3d45aa1d0347fdb7c4d35替换为fbc? --query:把单个SQL语句格式化为抽象化形式
案例 1 单个SQL语句格式化
$ pt-fingerprint --query "select a, b, c from users where id = 500" select a, b, c from users where id = ?
案例 2 SQL文件格式化
$ pt-fingerprint pt-fingerprint.txt select name, password from user where id=? select name, password from user where id=?
转载于 https://cloud.tencent.com/developer/article/1827935
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库