📜  如何使用Python在 SQL 表中查找重复值?

📅  最后修改于: 2022-05-13 01:54:27.724000             🧑  作者: Mango

如何使用Python在 SQL 表中查找重复值?

MySQL 服务器是一个开源的关系数据库管理系统,是对基于 Web 的应用程序的主要支持。数据库和相关表格是许多网站和应用程序的主要组成部分,因为数据是通过网络存储和交换的。为了从 Web 服务器访问 MySQL 数据库,我们使用Python中的各种模块,例如 PyMySQL、mysql.connector 等。

在本文中,我们将在数据库的特定 MySQL 表中查找重复值。首先,我们将连接到具有 MySQL 表的数据库。将要使用的 SQL 查询是:

SELECT * FROM table-name 
GROUP BY col_1, col_2,..., col_n 
HAVING COUNT(*) > 1;

如果表有主键,则也可以使用以下查询:

SELECT * FROM table-name 
GROUP BY primar-key
HAVING COUNT(*) > 1;

上述查询只会在表中生成重复的行,然后这些行将作为输出显示。

下面是一些描述如何在数据库的特定 MySQL 表中查找重复值的程序:

示例 1

下面是数据库geek中的表Documentary ,它将被Python脚本访问:

下面是获取 MySQL 表中重复行的程序:

Python3
# import required module
import mysql.connector
  
# connect python with mysql with your hostname, 
# database, user and password
db = mysql.connector.connect(host='localhost',
                             database='gfg',
                             user='root',
                             password='')
  
# create cursor object
cursor = db.cursor()
  
# get the sum of rows of a column
cursor.execute("SELECT * FROM Documentary \
               GROUP BY Name, Production \
               HAVING COUNT(*) > 1;")
  
# fetch duplicate rows and display them
print('Duplicate Rows:')               
for row in cursor.fetchall(): print(row)
  
# terminate connection
db.close()


Python3
# import required module
import mysql.connector
  
# connect python with mysql with your hostname, 
# database, user and password
db = mysql.connector.connect(host='localhost',
                             database='gfg',
                             user='root',
                             password='')
  
# create cursor object
cursor = db.cursor()
  
# get the sum of rows of a column
cursor.execute("SELECT * FROM Student \
               GROUP BY Roll \
               HAVING COUNT(*) > 1;")
  
# fetch duplicate rows and display them
print('Duplicate Rows:')               
for row in cursor.fetchall(): print(row)
  
# terminate connection
db.close()


输出:

示例 2:

这是从给定数据库中的表中查找重复行的另一个示例,以下是表方案和行:

我们可以看到Roll属性是Student表的主键,因此它只能与查询中的GROUP BY语句一起使用来生成重复行,下面是从表Student中获取行数的Python脚本:

蟒蛇3

# import required module
import mysql.connector
  
# connect python with mysql with your hostname, 
# database, user and password
db = mysql.connector.connect(host='localhost',
                             database='gfg',
                             user='root',
                             password='')
  
# create cursor object
cursor = db.cursor()
  
# get the sum of rows of a column
cursor.execute("SELECT * FROM Student \
               GROUP BY Roll \
               HAVING COUNT(*) > 1;")
  
# fetch duplicate rows and display them
print('Duplicate Rows:')               
for row in cursor.fetchall(): print(row)
  
# terminate connection
db.close()

输出: