본문 바로가기
내가 보는 개발 공부/Python

db에서 파일 명 가져와서 실제 파일 체크하기

by JeeGAe 2025. 7. 14.
import mysql.connector as mc

conn = mc.connect(
    host = 'host url',
    port = 포트번호,
    user = '유저명',
    password = '패스워드',
    database = 'db명'
)

cursor = conn.cursor()

# file_column = ''

# for i in range(1,11):
#     tempText = 'uploadfile' + str(i)
#     file_column += tempText + ', ' if i < 10 else tempText

file_column = ', '.join([f'uploadfile{i}' for i in range(1, 11)])
# print(file_column)

query = f"SELECT {file_column} FROM tb_bbs"

cursor.execute(query)

db_file_names = []

rows = cursor.fetchall()
for row in rows:
    for name in row:
        if name and name.strip() != '':
            db_file_names.append(name.strip())

# print(f'DB 파일 개수 : {len(db_file_names)}')
# print(db_file_names[:10])

cursor.close()
conn.close()

import os

base_dir = r'파일경로'

all_files = []

for root, dirs, files in os.walk(base_dir):
    for filename in files:
        all_files.append(filename.strip())

# print(f'전체 파일 개수 : {len(all_files)}')
# print(all_files[:10])

db_file_names_set = set(db_file_names)
all_files_set = set(all_files)

missing_files = db_file_names_set - all_files_set

print(f'db에 있는데 실존하지 않는 파일 개수 : {len(missing_files)}')

 

pip install mysql-connector-python

mysql connector를 먼저 설치합니다.

명령어가 안될 때

pip 명령어 대신

python -m pip install mysql-connector-python
또는

py -m pip install mysql-connector-python
둘 중 어느 쪽이든 동일하게 동작함.

 

파이썬에서 문자열 앞에 붙는 r, f, u, b 같은 것들은
**문자열 "접두사(prefix)"**라고 하고,
문자열이 어떻게 해석될지 결정하는 특별한 기능이야.


1. r'' : "Raw String"(원시 문자열)

  • r은 "raw"의 약자야
  • 문자열 안에 \(백슬래시)가 들어갈 때
    이스케이프 처리를 하지 않고
    있는 그대로 문자로 취급해줘!

2. f'' : "f-string"(포맷 문자열)

  • f는 "formatted string"의 약자
  • 문자열 안에서 변수나 표현식을 직접 집어넣을 수 있음
    ({변수명} 또는 {표현식})

기타

  • u'': 유니코드 문자열 (파이썬3는 그냥 ''도 유니코드라 거의 안 씀)
  • b'': 바이트 문자열 (이진데이터 처리할 때 씀)