首页 > 数据库 ># yyds干货盘点 #使用Python随机查询数据库中10个信息然后删除这10个信息

# yyds干货盘点 #使用Python随机查询数据库中10个信息然后删除这10个信息

时间:2023-10-24 22:01:02浏览次数:43  
标签:10 yyds Python 代码 random cursor connect result

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群【刘苏秦】问了一个Python数据库数据处理的问题,一起来看看吧。

# yyds干货盘点 #使用Python随机查询数据库中10个信息然后删除这10个信息_Python

cursor = connect.cursor()  
sql = "SELECT * FROM infos where status='' "
cursor.execute(sql)
result=random.sample(cursor.fetchall(),10)
result=[dict(i).get('num')for i in result]
for i in result:
    sql2 = f"DELETE  FROM infos  WHERE num = '{i}'"
    cursor.execute(sql2)
connect.commit()
connect.close()
return result

有优化办法没,功能就是随机查询10个然后删除这10个?

# yyds干货盘点 #使用Python随机查询数据库中10个信息然后删除这10个信息_Python入门_02

二、实现过程

这里【莫生气】给了一个思路:

呀~小主,我帮你优化了一下代码,优化后的代码如下所示:

import random

def delete_random_records(connect):
    cursor = connect.cursor()
    sql = "SELECT * FROM infos WHERE status = ''"
    cursor.execute(sql)
    result = random.sample(cursor.fetchall(), 10)
    result_ids = [dict(record).get('num') for record in result]
    
    sql2 = f"DELETE FROM infos WHERE num IN ({','.join(['%s']*len(result_ids))})"
    cursor.execute(sql2, result_ids)
    
    connect.commit()
    connect.close()
    
    return result_ids

优化说明:

  1. 将导入的random库放到代码开头,遵循Python的惯例。
  2. 将代码封装成一个函数,提高代码的可重用性。
  3. 使用参数化查询,避免SQL注入的风险。
  4. 使用IN语句一次性删除多条记录,减少与数据库的交互次数。
  5. 返回删除的记录ID列表,方便后续处理。

顺利地解决了粉丝的问题。

# yyds干货盘点 #使用Python随机查询数据库中10个信息然后删除这10个信息_数据库_03

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python数据库处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【刘苏秦】提问,感谢【莫生气】给出的思路和代码解析,感谢【懒人在思考】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

# yyds干货盘点 #使用Python随机查询数据库中10个信息然后删除这10个信息_sql_04

标签:10,yyds,Python,代码,random,cursor,connect,result
From: https://blog.51cto.com/u_13389043/8010596

相关文章

  • openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户
    openGauss学习笔记-108openGauss数据库管理-管理用户及权限-用户使用CREATEUSER和ALTERUSER可以创建和管理数据库用户。openGauss包含一个或多个已命名数据库。用户和角色在整个openGauss范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都......
  • 大二打卡(10.24)
    今天做了什么:数据结构,第一节课复习,第二节课开始对哈夫曼相关知识讲解,都是离散里面学过的,除了代码实现,还算轻松的一节课,下节课就要开始讲图了,一天天过的真快啊马原,今天座位占的好,在第四排,虽然离老师不近,但是还是可以的,下次抢个再考前一点点的位置晚上白话文,金瓶mei,以前只知道是......
  • 大二打卡(10.19)
    周四今天做了什么:昨天晚上,uml把自己的设计的系统按照老师的要求修改了(老师建议换一个系统),今天老师没评价新改的系统怎么样,等着他后续发布体育课,学了扣球忽然就不会发球了,又是新学似的一节课数据结构,今天学了数和森林,把森林和二叉树之间的相互转换学会了,还有哈夫曼树的一点点内......
  • 1024每日总结
    今天配置了spark其中遇到了很多困难,在同学的帮助下最后还是配置成功了,然后还做了软考的题,并且学习了大型数据库的下一次的作业改怎么去做。明天:继续做软考的题,争取吧大型数据库的作业做完。......
  • 大二打卡(10.20)
    今天做了什么:看着舍友学习,被带动着学了下午三四个小时,还是对于数据库的链接稀里糊涂,但是比之前有点进步,好像配置好了,不会再出现404的错误了,但是出现了505,后来查博客发现,是我tomcat和jdk版本不适配,重弄成tomcat9跟jdk1.8就成了......
  • 代码随想训练营第十四天(Python)| 层序遍历 10 、● 226.翻转二叉树 、101.对称二叉树 2
    层序遍历1、迭代法,使用队列classSolution:deflevelOrder(self,root:Optional[TreeNode])->List[List[int]]:res=[]ifrootisNone:returnresqueue=[root]whilequeue:n=len(queue)......
  • 大二打卡(10.23)
    今天做了什么:上午工程实训,我的老天爷,从圆钢上取材做个小爱心,累点,手疼点也没啥,但是他那共用手套好臭啊,我这辈子第一次知道,手套能发出一周不洗的袜子的味道,戴了一上午,手都入味儿了,用沐浴露洗了半天才没味儿下午的java,又是紧张刺激的一个下午,今天的小测试终于不跟数据库有关了,考一......
  • LeetCode 1089. 复写零
    复写零题目链接1089.复写零给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。请对输入的数组就地进行上述修改,不要从函数返回任何东西。示例1:输入:arr=[1,0,2,3,0,4,5,0]输......
  • .NET周刊【10月第2期 2023-10-08】
    国内文章起风了,NCC云原生项目孵化计划https://www.cnblogs.com/liuhaoyang/p/ncc-the-wind-rises.html2016年,我和几位朋友发起了.NETCore中文学习组和ASP.NETCore文档翻译项目,随后创建了.NETCoreCommunity开源社区,吸引了近30个优秀的开源项目加入。然而,随着时间的推移,社区......
  • [Leetcode] 0100. 相同的树
    100.相同的树题目描述给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例1:输入:p=[1,2,3],q=[1,2,3]输出:true示例2:输入:p=[1,2],q=[1,null,2]输出:false示例3:......