sqlite3 테이블에서 중복값을 찾는 Python 예제코드입니다.
2023. 12. 3 최초작성
2024. 3. 7 에러처리 코드 추가
중복을 검사할 테이블을 생성합니다.
import sqlite3 database_file_path = 'zodiac.db' table_name = 'zodiac' try: conn = sqlite3.connect(database_file_path) cursor = conn.cursor() print("Database connection successful!") except sqlite3.Error as e: print(f"Database connection failed: {e}") exit() cursor = conn.cursor() query = f'DROP TABLE {table_name}' try: cursor.execute(query) print("Table delection successful!") except sqlite3.Error as e: print(f"Table delection failed: {e}") # 테이블을 생성합니다. query = f''' CREATE TABLE IF NOT EXISTS {table_name} ( year INTEGER PRIMARY KEY, animal TEXT ) ''' try: cursor.execute(query) print("Table creation successful!") except sqlite3.Error as e: print(f"Table creation failed: {e}") conn.close() exit() cursor.execute(f'INSERT INTO {table_name} (year, animal) VALUES (?, ?)', (2000, '용')) cursor.execute(f'INSERT INTO {table_name} (year, animal) VALUES (?, ?)', (2002, '말')) cursor.execute(f'INSERT INTO {table_name} (year, animal) VALUES (?, ?)', (2012, '용')) conn.commit() query = f'SELECT * FROM {table_name}' try: cursor.execute(query) except sqlite3.Error as e: print(f"select execution failed : {e}") results = cursor.fetchall() cursor.close() conn.close() for result in results: print(result) |
실행하면 다음처럼 용이 2번 포함되어 있습니다.
Database connection successful!
Table delection failed: no such table: zodiac
Table creation successful!
(2000, '용')
(2002, '말')
(2012, '용')
다음 코드를 사용하여 animal 컬럼에 용이 두번 중복된 것을 찾습니다.
import sqlite3 database_file_path = 'zodiac.db' # 데이터베이스 파일 이름입니다. table_name = 'zodiac' # 테이블 이름입니다. column_name = 'animal' # 중복값을 찾을 컬럼 이름입니다. try: conn = sqlite3.connect(database_file_path) cursor = conn.cursor() print("Database connection successful!") except sqlite3.Error as e: print(f"Database connection failed: {e}") exit() cursor = conn.cursor() try: cursor.execute(f""" SELECT {column_name}, COUNT(*) FROM {table_name} GROUP BY {column_name} HAVING COUNT(*) > 1 """) # 데이터베이스에서 특정 테이블(table_name)의 특정 열(column_name)에 대해 중복된 값을 찾는 쿼리를 실행합니다. # 지정된 열에서 중복된 값과 그 값이 테이블에서 나타나는 횟수를 반환합니다. # # 1. SELECT {column_name}, COUNT(*) : 선택한 열(column_name)의 값과 해당 값이 테이블에 나타나는 횟수를 선택합니다. # 2. FROM {table_name} : 쿼리가 실행될 테이블(`table_name`)을 지정합니다. # 3. GROUP BY {column_name} : column_name의 모든 고유 값에 대해 그룹을 만들고, 각 그룹 내에서 해당 값이 나타나는 횟수를 계산합니다. # 4. HAVING COUNT(*) > 1 : 그룹화된 결과 중에서 해당 값이 한 번 이상 나타나는 경우만 선택합니다. 즉, 중복된 값을 찾는 데 사용됩니다. # 중복된 값이 있는지 결과를 가져옵니다. duplicates = cursor.fetchall() # 중복된 값이 있으면 출력합니다. if duplicates: print("중복된 값이 있습니다:") for dup in duplicates: print(f"값 {dup[0]} 는 {dup[1]}번 중복되었습니다.") else: print("중복된 값이 없습니다.") except sqlite3.Error as e: print(f"데이터베이스 오류 발생: {e}") finally: conn.close() |
실행 결과 용이라는 값이 2번 중복되었다는 것을 출력합니다.
중복된 값이 있습니다:
값 용 는 2번 중복되었습니다.
첫번째 코드를 수정하여 다음 2개의 값만 테이블에 저장하도록 변경해봅니다.
(2000, '용')
(2002, '말')
두번째 코드를 사용하여 중복을 검사하면 다음처럼 중복된 값이 없다고 출력됩니다.
중복된 값이 없습니다.
sqlite3 테이블에 데이터 삽입하는 Python 예제코드
https://webnautes.tistory.com/2225
sqlite3 테이블 출력하는 Python 예제
https://webnautes.tistory.com/2372
sqlite3 테이블에 있는 레코드 개수 세는 Python 예제코드
https://webnautes.tistory.com/2223
sqlite3 테이블에 있는 레코드 하나를 랜덤으로 보여주는 Python 예제
https://webnautes.tistory.com/2224
sqlite3 테이블에서 데이터를 검색하는 Python 예제코드
https://webnautes.tistory.com/2226
sqlite3 테이블에서 중복값을 찾는 Python 예제코드
https://webnautes.tistory.com/2233
sqlite3 테이블의 스키마(schema)를 출력하는 Python 예제코드
https://webnautes.tistory.com/2227
'Python > sqlite3' 카테고리의 다른 글
SQLite3 Python 예제 (0) | 2024.08.11 |
---|---|
sqlite3 테이블 출력하는 Python 예제 (0) | 2024.08.11 |
sqlite3 테이블에서 데이터를 검색하는 Python 예제코드 (0) | 2024.03.07 |
sqlite3 테이블에 있는 레코드 하나를 랜덤으로 보여주는 Python 예제 (0) | 2024.03.07 |
sqlite3 테이블에 있는 레코드 개수 세는 Python 예제코드 (0) | 2024.03.07 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!