import re
import pandas as pd
import mysql.connector
from used_pc_price_from_api_cpu_gpu_ram_hdd_table_entire_update_for_item_save_joblib import ensure_connection, process_na_price, clean_price
from db_config import get_db_connection
# db 객체 생성
db = get_db_connection()

# api___price_gpu 테이블에서 데이터 가져오기
query = "SELECT * FROM api___price_gpu ORDER BY `rank`"
# 쿼리 실행 전 연결 확인
ensure_connection(db)
df_gpu = pd.read_sql_query(query, db)

# price_org 컬럼 데이터 정제
df_gpu['price_clean'] = df_gpu['price_org'].apply(clean_price)

# NA 값 처리
df_gpu['price'] = df_gpu['price_clean'].interpolate()

# price 열을 숫자로 변환
df_gpu['price'] = pd.to_numeric(df_gpu['price'], errors='coerce')

# NaN 값 처리 (선택 사항)
df_gpu['price'] = df_gpu['price'].fillna(df_gpu['price'].mean())

# 정제된 가격 데이터를 MySQL에 업데이트
# price 컬럼의 값을 소수점 이하 2자리까지 반올림
df_gpu['price'] = df_gpu['price'].round(2)

cursor = db.cursor()
for index, row in df_gpu.iterrows():
    update_query = """
    UPDATE api___price_gpu
    SET price = %s
    WHERE id = %s
    """
    cursor.execute(update_query, (row['price'], row['id']))

db.commit()
# cursor.close()

print("api___price_gpu 테이블의 price 컬럼이 업데이트되었습니다.")