ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬에서 MS-SQL 한글 데이터 검색, 출력 시 깨짐 ..
    파이썬 코드 2022. 8. 25. 15:23

    며칠전 업무 자동화에 파이썬을 써볼까 해서 MS-SQL 의 데이터를 검색해서 가져왔는데 출력값이 깨져보인다는 ㅠㅠ

    관련 글을 검색해보다가 해결되어서 이곳에 남겨놉니다.

     

    import os
    import openpyxl
    import pymssql
    
    # 엑셀파일 위치 지정
    filename = os.path.join(os.getcwd(), 'pythonProject', 'address.xlsx')
    print(filename, "파일 작업을 시작합니다.")
    
    db_host = "DB서버"
    db_user = "계정ID"
    db_password = "계정비번"
    db_name = "DB명"
    db_charset = "utf8"
    
    conn = pymssql.connect(server=db_host, user=db_user, password=db_password, database=db_name, charset=db_charset, as_dict=True)
    cursor = conn.cursor()
    
    # 엑셀파일 읽어오기
    wb = openpyxl.load_workbook(filename)
    ws = wb.active
    mr = ws.max_row
    
    for i in range(3, mr+1):
        user_name = ws.cell(i, 5).value.split(" ")[0]
        # 특정 셀에서 읽어온 값을 공백으로 구분
        # print(user_name)
    
        sql = "SELECT ZIP_CODE, HOME_ADDR FROM INSA_USER WHERE EMP_STATUS = 'W' "
        sql += "AND EMP_NAME = '" + user_name + "'"
        cursor.execute(sql)
    
        # 엑셀에 쓰기
        for row in cursor:
            ws.cell(i, 6).value = row['ZIP_CODE']
            ws.cell(i, 7).value = row['HOME_ADDR'].encode('ISO-8859-1').decode('cp949')
            # uff-8인 한글을 ISO-8859-1로 인코딩 후 cp949로 디코딩
    
    conn.close()
    
    wb.save(filename)
    print(filename, "파일 작업이 완료되었습니다.")

     

Designed by Tistory.