Python数据库 -- 查询结果处理、SQL表内数据去重

2023-10-26

目录

需求

Python脚本查询数据库及返回结果的处理 

MySQL表内既有数据的去重思想及SQL语句 


需求

每次在爬动态的时候都会把前几条重复爬取,以前想着先把功能完善了再说。终于,功能做完了,要面对这个数据问题了。

想法是先看看领英的帖子是否有跟脸书一样的独特标志,可以用做识别的,但是检查元素后发现没有,那就只能对比内容来做重复识别了。

那么接下来的步骤很简单,也很低效率,每次先从数据库中读出所有的 content 列的内容,存到一个列表中,再检测每篇文章的内容,若已存在,就跳过这篇文章不再爬取。

方法成功执行,数据不再高度冗余。

后期预计加入检测评论数和点赞数的变化,来判断是否更新这条记录,更新预计使用update语句。

 

Python脚本查询数据库及返回结果的处理 

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall(): 接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

有一点要注意,从数据库中查询返回的结果列表,里面的元素并不是字符串类型,而且格式也多了括号和逗号,需要特殊处理再进行比较操作。

(!!!重要!!!2021-02-06 20:18补充)使用Python从数据库中cur.execute(sql_select)以及cur.fetchall()查询到的结果集合,数据类型为tuple即元组类型,不能进行append操作,需要先强制类型转换,list1=list(tuple1)。在列表中的元素也不是数据库中看到的,开头会多出   ('   ,结尾会多出   ',)   ,所以要截取一下,比如str1=str1[2:len(str1)-3]。

sql_select = 'select url from rurls;'
cur.execute(sql_select)
tuple1 = cur.fetchall()  # 获取结果元组
list1 = list(tuple1)  # 元组强制转换为list
str1 = str(list1[0])  # 强制转换list中的元素为str
str1 = str1[2:len(str1) - 3]  # 字符串截取

首先强制类型转换为str,然后取子串比较。 

# 读取数据库
sql_select = "select substring(content,1,10) from linkedin_blog where uname = '%s'" % uname
allc = []
try:
   cur.execute(sql_select)
   allc = cur.fetchall()
   print('数据库内容读取成功')
except Exception as e:
   print("数据库内容读取失败")

# 爬取当前文章的content

# 检测
c2t = content[0:10]
for ac in allc:
   a2t = str(ac)[2:12] # 这里注意特殊处理
   if c2t == a2t:
      ifexist = 1
      break

# 真正的爬取
if ifexist == 0:
    # 进行全文信息爬取

    

 

MySQL表内既有数据的去重思想及SQL语句 

大致思想是:

1、查询出——某个不可能重复的字段(比如 url )的重复值即 count>1 的 url 值

2、以及——url 字段有重复即count>1数据的最小自增 auto_id 值

3、执行删除

 

 

delete 
from urls
where
url in (select durl from (select url as durl from urls group by url having count(url)>1) a)
and
auto_id not in (select did from (select min(auto_id) as did from urls group by url having count(url)>1 ) b)

数据库表是这样的:  

 

SQL语句层次: 

附重置本地数据库表的自增id(也会清空表内数据)的方法:

1、进入MySQL客户端。

2、切换数据库。

3、运行   truncate table your_table_name;   即可

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python数据库 -- 查询结果处理、SQL表内数据去重 的相关文章

  • on_delete=models.PROTECT 和 on_delete=models.CASCADE 在 Django 模型上有什么作用?

    我对 Django 很熟悉 但最近注意到有一个on delete models CASCADE and on delete models PROTECT模型的选项 on delete models CASCADE and on delete
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • Python igraph:从图中删除顶点

    我正在使用安然电子邮件数据集 并尝试删除没有 enron com 的电子邮件地址 即我只想拥有安然电子邮件 当我尝试删除那些没有 enron com 的地址时 一些电子邮件由于某些原因被跳过 下面显示了一个小图 其中顶点是电子邮件地址 这是
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • Python 中的 @staticmethod 与 @classmethod

    方法和方法有什么区别装饰的 https peps python org pep 0318 with staticmethod http docs python org library functions html staticmethod和
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 如何列出 python PDB 中的当前行?

    在 perl 调试器中 如果重复列出离开当前行的代码段 可以通过输入命令返回到当前行 点 我无法使用 python PDB 模块找到任何类似的东西 如果我list如果我自己离开当前行并想再次查看它 似乎我必须记住当前正在执行的行号 对我来说
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • 如何解决 MySQL innodb 在 TRUNCATE TABLE 上“等待表元数据锁”?

    在 GitLab CI 服务器中运行包含数百个应用程序单元测试的测试套件 运行 10 次测试后 不知怎的 它总是卡在等待 TRUNCATE TABLE 上的表元数据锁上 这是一个拆卸步骤 我知道SHOW ENGINE INNODB STAT
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如
  • 哪个是识别关系或非识别关系中的子表?

    在表之间的识别和非识别关系的上下文中 MySQL 文档大量将表称为父表和子表 如何判断哪个表是父表 哪个表是子表 子表 A K A 弱实体 http en wikipedia org wiki Weak entity 是一个表 其主键属性d
  • 来自 django 教程 was_published_recently.admin_order_field = 'pub_date'

    From Django 教程 https www jetbrains com help pycharm 2017 1 creating and running your first django project html d28041e21

随机推荐

  • AXI总线介绍

    AXI总线介绍 参考文档 UG761 AXI Reference Guide v14 3 AXI入门 深入AXI总线 一 深入AXI总线 二 AXI是什么 axi是一种总线协议 他是ARM AMBA Advanced Microcontro
  • Unity Shader: Shader粒子广告牌

    广告牌效果既是不论物体与摄像机的角度 被渲染物体总是正对着摄像机 此技术广泛利用于粒子效果中 例如Unity内置的Particle System 下文将要介绍如何在Shader中实现广告牌效果 在视空间对顶点进行重定位 图1 摄像机绑定在立
  • 关于实现shiro权限拦截遇到的一些坑

    目的 通过拦截器实现对部分请求的拦截做自定义的鉴权处理 鉴权不通过时实现json返回 bug 通过继承 PermissionsAuthorizationFilter 实现了自定义的鉴权处理 但是前端报错302并做了请求转发 配置 1 在 S
  • vue脚手架 快速搭建项目

    使用vue cli vue脚手架 快速搭建项目 什么是vue cli 使用vue cli搭建项目步骤 1 安装NodeJs 下载node js到本地 2 安装npm 3 安装淘宝npm镜像 4 全局安装vue cli脚手架 5 测试环境是否
  • 交换机与MAC地址

    目录 前言 1 以太网MAC地址 2 以太网帧格式 3 交换机的工作原理 3 1交换机以太网接口的工作模式 3 2交换机以太网接口速率 4 华为命令 4 1管理路由器 交换机的方式 总结 前言 1 什么是交换技术 MAC地址又有什么作用 交
  • 【1】掌握浏览文件目录类命令

    1 浏览目录类命令 pwd 查看用户当前所处目录位置 cd 切换命令 1 代表当前目录 2 代表当前目录父目录 3 代表家目录即主目录 4 返回上一级 cd 返回上两级 ll或ls 列出文件或目录信息 ll比ls详细 1 文件 2 d 目录
  • bert-base-ner-train训练没有打印loss及step等重要参数信息(写给初学者)

    在跟随大牛 Macanv 基于BERT预训练的中文命名实体识别TensorFlow实现 的帖子一步步实现时 发现了一个非常困扰的问题 就是执行以下语句后 屏幕上什么提示也没有 比如loss是多少 进行到哪一步了step等等 百度一顿搜索后
  • Wallpaper Engine特性仿制

    wallpaper master 起源 最近一直在折腾一下壁纸的东西 前段时间刚写了一个跨平台桌面 windows linux kde 的壁纸网络应用 个人使用效果还不错的样子 地址 前两天突然发现了wallpaper engine这个软件
  • 从0开始搭建微信小程序(前后端)的全过程

    前言 有段时间比较闲就尝试着做了一个微信小程序 一是为了锻炼自己独立部署一个前后端全链路系统的能力 二是想做一个自己都想用的小程序出来 方向是让用户可以集中获取优质的电影 音乐 书籍 游戏等信息的推荐 那什么是优质的信息呢 我这里假设的是排
  • FreeBSD tips

    56 Ports如何清除安装参数cd usr ports www operamake distclean移除不是port collections所期望下载的文件 make rmconfig清除用户配置的参数make showconfig查看
  • vue使用高德地图搜索以后自动生成的marker的点击事件

    vue使用高德地图搜索以后自动生成的marker的点击事件 在确认初始化地图以后 执行下面的方法 searchMap addr let this this let autoOptions city 全国 map this map 展现结果的
  • GKDtdqgzTx

    博客搬家
  • 3.3 CPU共享功能

    最后更新2021 08 11 Power VM共享CPU的策略由Power CPU架构 Hypervisor 和AIX进程调度功能综合实现 我们可以将这个过程分为两个阶段 AIX对进程 线程 进行调度 让线程尽量集中运行在 同一 物理CPU
  • Phabricator搭建

    最近一直想搭建一个代码审查的系统 最后选了Phabricator Phabricator这个软件就不多介绍了 直接切入主题 1 系统选择CentOS6 5 当然也可以在windows上安装 本人未尝试过 个人觉得毕竟多数开源软件都是基于Li
  • [bzoj3309] DZY Loves Math

    题目大意 对于正整数n 定义f n 为n所含质因子的最大幂指数 例如f 1960 f 2 3 5 1 7 2 3 f 10007 1 f 1 0 给定正整数a b 求 ai 1 bj 1f i j sum i 1 a sum j 1 b f
  • 分页与order_by

    作者 敖士伟 1 用ordery by进行排序时 并不能一定能得到一个确定的序列 因为有些列值相等 这样就要再添加一个排序条件如 select from tbKuCunJiLuBiao order by dt KCJLB RKShiJian
  • unreal-修改项目缓存地址

    更改UE4项目缓存路径 目录 更改UE4项目缓存路径 找到软件安装路径下的配置文件 BaseEngine ini 右键记事本打开 开始修改配置信息 找到软件安装路径下的配置文件 BaseEngine ini 例如 D Program Fil
  • ChatGPT应用于高职教育的四大潜在风险

    目前 ChatGPT还是一种仍未成熟的技术 当其介入高职教育生态后 高职院校师生在享受ChatGPT带来的便利的同时 也应该明白ChatGPT引发的风险也会随之进入高职教育领域 如存在知识信息 伦理意识与学生主体方面的风险与挑战等 如图1所
  • oh-my-zsh,让你的Linux命令终端从未这么爽过

    oh my zsh shell的类型有很多种 linux下默认的是bash 虽然bash的功能已经很强大 但对于以懒惰为美德的程序员来说 bash的提示功能不够强大 界面也不够炫 并非理想工具 而zsh的功能极其强大 只是配置过于复杂 起初
  • Python数据库 -- 查询结果处理、SQL表内数据去重

    目录 需求 Python脚本查询数据库及返回结果的处理 MySQL表内既有数据的去重思想及SQL语句 需求 每次在爬动态的时候都会把前几条重复爬取 以前想着先把功能完善了再说 终于 功能做完了 要面对这个数据问题了 想法是先看看领英的帖子是