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

 

posted @   东山絮柳仔  阅读(346)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示