首页 > 数据库 >20240709(byte数据转换、字典数据选择性保留、选择性查询数据库)

20240709(byte数据转换、字典数据选择性保留、选择性查询数据库)

时间:2024-07-10 10:34:13浏览次数:10  
标签:20240709 item 选择性 LIMIT key 查询数据库 filtered data 字典

需要补的知识:

​ 1.HTTP协议,url里,那些header、body里都是啥东西

报错信息:

"服务异常 'bytes' object has no attribute 'get'"

错误原因:

​ http传输中,GET方法传入的是byte格式的数据,没有.get方法

# 假设你有一个包含JSON数据的字节字符串  
json_bytes = b'{"name": "John", "age": 30, "city": "New York"}'

使用json_byte.get("name"),就会报这个错误。

解决方法:

​ 1.先将byte数据转换成字符串格式

json_str = json_bytes.decode('utf-8')

​ 2.字符串格式依旧没有.get方法,还需要将其转换成json格式

json_data = json.loads(json_str)

这时候再运行,就正常了。

做项目时数据库字段保留问题:

​ 做项目时,有一些数据库中的字段在某个场景不需要使用,这时候最好时把用到的拿出来,而不是把不需要的删去。因为如果以后需要向数据库中添加新字段,用后者的话,就会出现bug.

对字典的字段进行选择性保留:
[
  {
    "accountName": "测试2",
    "accountNo": null,
    "cardNumber": null,
    "create_at": "2024-07-08 10:23:30",
    "iDentityCode": null,
    "id": 8,
    "imageBase64": "data:imbE/wDT
    "imageID": "12",
    "isSync": 0,
    "phoneNumber": null,
    "user_id": 7
  },
  {
    "accountName": "测试2",
    "accountNo": null,
    "cardNumber": null,
    "create_at": "2024-07-08 10:23:28",
    "iDentityCode": null,
    "id": 7,
    "imageBase64": "data:image/p
    "imageID": "12",
    "isSync": 0,
    "phoneNumber": null,
    "user_id": 9
  }
]

错误示范:

# 定义要保留的字段列表  
fields_to_keep = ["accountName", "user_id", "imageBase64"]

# 遍历列表并更新每个字典  
for item in data:
    # 使用字典推导式来保留只需要的字段  
    item.update({k: v for k, v in item.items() if k in fields_to_keep})

这样得到的新data,依旧和原来的一样,没有发生改变。

错误原因:

[!TIP]

因为在字典推导式中,虽然我们使用了推导式来筛选出需要的字段,但是并没有对原始字典进行修改。在Python中,字典推导式会创建一个新的字典,而不会直接在原始字典上操作。

因此,原来的代码虽然在推导式中保留了只需要的字段,但并没有影响原始字典,所以最终输出的结果仍然包含了所有字段。

正确做法:创建一个新的字典

filtered_data = []
fields_to_keep = ["create_at", "id", "imageID", "isSync", "user_id"]

for item in data:
    filtered_item = {key: item[key] for key in fields_to_keep if key in item}
    filtered_data.append(filtered_item)

print(filtered_data)

封装成一个函数:

def filter_fields(data, fields_to_keep):
    filtered_data = []

    for item in data:
        filtered_item = {key: item[key] for key in fields_to_keep if key in item}
        filtered_data.append(filtered_item)

    return filtered_data
选择性地查询数据库中的数据

每次查询一条,消费记录consume_info表中有一个datetime字段,用来记录表中数据的创建时间,想查询最新的消费记录,即最后一笔记录,应该怎么做,查询倒数第二、第三、第四....又该怎么做

可以使用ORDER BY将结果按照datetime字段降序排列,并使用LIMIT来限制只返回一条记录

SELECT * FROM consume_info ORDER BY datetime DESC LIMIT 1;

要查询倒数第二、第三、第四等记录,同样需要按照datetime字段降序排列,但这次需要调整LIMIT子句的参数来返回不同数量的记录。不过,由于LIMIT是从0开始计数的,因此,要获取倒数第二条记录,你需要跳过最新的那条记录,即使用LIMIT 1 OFFSET 1;类似地,要获取倒数第三条记录,则使用LIMIT 1 OFFSET 2,依此类推。

#查询倒数第二条
SELECT * FROM consume_info ORDER BY datetime DESC LIMIT 1 OFFSET 1;
#查询倒数第三条
SELECT * FROM consume_info ORDER BY datetime DESC LIMIT 1 OFFSET 2;
#查询倒数第四条
SELECT * FROM consume_info ORDER BY datetime DESC LIMIT 1 OFFSET 3;

LIMIT m OFFSET n    #跳过n条数据,往后查询m条数据

标签:20240709,item,选择性,LIMIT,key,查询数据库,filtered,data,字典
From: https://www.cnblogs.com/marverdol/p/18293377

相关文章

  • 20240709比赛总结
    T1超市抢购https://gxyzoj.com/d/hzoj/p/3765仔细读懂数据生成器,就能看出来,实际上物品肯定是够用的因为只能从右向左搬运物品,所以我们只需要对于每一个i,i+1的间隔,考虑有多少个物资需要从右边搬到左边去,把这个贡献累加即可代码:#include<cstdio>#include<algorithm>#define......
  • 【20240709】海量图片导出需求,shell脚本
     [root@localhostimages]#catjunshuv3.sh#!/bin/bash#确保脚本在~/images目录下运行if["$(pwd)"!="$HOME/images"];thencd~/imagesfi#创建目标目录junshu,如果不存在则创建mkdir-pjunshu#获取CSV文件中的总行数,用于进度条total_lines=$(wc-l......
  • java操作hbase查询数据 java操作hbase查询数据库
    java操作hbase查询数据java操作hbase查询数据库HBasejavaAPI访问HBase数据库登录后复制packagecom.hunan.hbase_options;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.;importorg.apache.hadoop.hbase.client.;importorg.apache.had......
  • MySQL 查询数据库响应时长详解
    前言作为一名测试工程师,在性能测试中,查询数据库的响应时长是一个重要指标。MySQL提供了多种方法来监控和优化查询性能。本文将详细介绍如何使用MySQL的内置功能和工具来查询数据库响应时长,并分享一些性能优化的技巧。启用查询日志开启慢查询日志慢查询日志用于记录执......
  • mysql查询数据库大小
    我们可以使用MySQL命令来查看数据库的数据量大小。首先打开命令行终端,进入MySQL的安装目录,然后执行以下命令:mysql-uusername-p其中,username是你的MySQL用户名。执行命令后,会提示你输入密码。输入正确的密码后,你将进入MySQL命令行界面。接下来,选择你要查看的数据库。假设你想......
  • jmeter连接数据库查询数据库表数据
    1、先下载mysql-connector-java-5.1.7插件放到jmeter目录的lib下面,下载地址(https://downloads.mysql.com/archives/c-j/),因为我的jmeter是放在Windows的,所以我下载第二个​2、下载完后解压文件,复制文件夹下面的mysql-connector-java-5.1.7-bin存放到jmeter的lib目录下(忘记jmet......
  • MySQL查询数据库响应时长的方法
    要查询MySQL数据库的响应时长,通常我们需要测量查询执行的时间。MySQL本身并不直接提供一个查询来显示每个查询的响应时长历史记录,但我们可以使用MySQL的内置函数和工具来测量和记录查询的执行时间。以下是一些方法,我们可以用来测量MySQL查询的响应时长:1.使用SHOWPROFILES(......
  • mysql 查询数据库响应时长的方法
    要查询MySQL数据库的响应时长,通常我们需要测量查询执行的时间。MySQL本身并不直接提供一个查询来显示每个查询的响应时长历史记录,但我们可以使用MySQL的内置函数和工具来测量和记录查询的执行时间。以下是一些方法,我们可以用来测量MySQL查询的响应时长:1.使用SHOWPROFILES(注意......
  • tg机器人查询数据库在哪里:一文教你轻松定位数据库查询功能
    在使用TG机器人时,我们经常会需要查询数据库以获取所需的信息。但是,如何找到并定位这些数据库查询功能呢?本文将为你详细解答。一、理解机器人功能首先,你需要明确你正在使用的TG机器人是否具备数据库查询功能。这通常可以在机器人的介绍或官方文档中找到。如果机器人支持数据库......
  • YOLOv8改进 | 卷积模块 | 添加选择性内核SKConv【附完整代码一键运行】
    ......