mcp 기본

카테고리 없음 2025. 4. 2. 14:57


import openpyxl
from openpyxl.styles import Alignment, Border, Side, PatternFill
from openpyxl.styles.colors import Color

def create_excel_table(data, filename="table2.xlsx"):
    """
    주어진 데이터를 기반으로 엑셀 테이블을 생성하고, 코멘트 부분을 통합 및 외부 윤곽선을 추가하고,
    엔티티 타입 명 (논리) 부분에 회색 음영을 적용합니다.

    Args:
        data (list): 테이블 데이터를 담고 있는 리스트
        filename (str): 생성할 엑셀 파일 이름
    """

    # 엑셀 워크북 생성
    workbook = openpyxl.Workbook()
    sheet = workbook.active

    # 데이터 작성
    for row_idx, row_data in enumerate(data, start=1):
        for col_idx, cell_data in enumerate(row_data, start=1):
            cell = sheet.cell(row=row_idx, column=col_idx, value=cell_data)
            cell.alignment = Alignment(horizontal='center', vertical='center')

    # 코멘트 부분 셀 병합 및 외부 윤곽선 추가
    sheet.merge_cells("E1:E3")  # E1부터 E3까지 셀 병합
    sheet.cell(row=1, column=5).value = "코멘트"  # 병합된 셀에 "코멘트" 입력
    sheet.cell(row=1, column=5).alignment = Alignment(horizontal='center', vertical='center') # 가운데 정렬

    # 외부 윤곽선 스타일 정의
    border_style = Border(
        left=Side(border_style='thin'),
        right=Side(border_style='thin'),
        top=Side(border_style='thin'),
        bottom=Side(border_style='thin')
    )

    # 병합된 셀에 외부 윤곽선 적용
    for row in sheet["E1:E3"]:
        for cell in row:
            cell.border = border_style

    # 나머지 셀에 외부 윤곽선 적용
    for row in sheet["A1:D3"]:
        for cell in row:
            cell.border = border_style

    # 엔티티 타입 명 (논리) 부분에 회색 음영 적용
    gray_fill = PatternFill(start_color='D3D3D3', end_color='D3D3D3', fill_type='solid')  # 회색 음영 스타일 정의
    for row in sheet["A1:A3"]:  # A1부터 B1까지 셀 선택
        for cell in row:
            cell.fill = gray_fill  # 회색 음영 적용

    # 열 너비 자동 조정
    for column_cells in sheet.columns:
        length = max(len(str(cell.value)) for cell in column_cells)
        sheet.column_dimensions[column_cells[0].column_letter].width = length + 2

    # 파일 저장
    workbook.save(filename)
    print(f"엑셀 파일 '{filename}'이 생성되었습니다.")

# 테이블 데이터
table_data = [
    ["엔티티 타입 명 (논리)", "회원", "작성일", "2025-03-26", ""],  # 코멘트 열 추가
    ["테이블 명 (물리)", "T_MBR_ACNT", "작성자", "홍길동", "기존 테이블 : 회원"],
    ["테이블 설명", "회원", "", "", ""]  # 코멘트 열 추가
]

# 엑셀 파일 생성
create_excel_table(table_data)

function myfunction
{
echo "$1"
}


# generate.py BEGIN -------------

import mysql.connector
from jinja2 import Environment, FileSystemLoader

# MariaDB 접속 설정
def get_db_connection():
    return mysql.connector.connect(
        host="",    # MariaDB 호스트
        user="",         # MariaDB 사용자
        password="", # MariaDB 비밀번호
        database=""    # 사용할 데이터베이스
    )


# 테이블 정보 가져오기
def get_table_comment(table_name):
    connection = get_db_connection()
    cursor = connection.cursor()
    cursor.execute(f"""SELECT 
                        TABLE_COMMENT
                    FROM 
                        INFORMATION_SCHEMA.TABLES
                    WHERE 
                        TABLE_NAME = '{table_name}' 
                    """)

    table_comment = cursor.fetchone()[0]
    cursor.close()
    connection.close()
    return table_comment


# 테이블 컬럼 정보 가져오기
def get_table_columns(table_name):
    connection = get_db_connection()
    cursor = connection.cursor()
    cursor.execute(f"""SELECT
                    column_name,
                    column_type,
                    column_comment
                FROM
                    information_schema.columns
                where 1=1 
                and table_name = '{table_name}' """)

    columns = cursor.fetchall()
    cursor.close()
    connection.close()
    return columns



# Jinja2 템플릿을 사용하여 Java 클래스를 생성
def generate_java_code(table_comment, columns, class_name):
    # Jinja2 환경 설정
    env = Environment(loader=FileSystemLoader("templates"))
    
    # 템플릿 파일 로딩
    template = env.get_template("entity_template2.java.j2")


    # 테이블 컬럼에 맞는 데이터 생성
    column_info = []
    for column in columns:
        column_info.append({
            "name": to_camel_case(column[0]),
            "type": "int" if "int" in column[1].lower()[0:3] else "String", 
            "comment": column[2],
            "name2": column[0]
        })
    
    # 템플릿 렌더링
    java_code = template.render(table_name="MBR_ACNT", table_comment=table_comment, class_name=class_name, columns=column_info)
    
    # 생성된 Java 코드 출력
    return java_code

# 파일로 저장
def save_java_file(java_code, class_name):
    file_name = f"{class_name}.java"
    with open(file_name, "w") as file:
        file.write(java_code)
    print(f"Java 파일이 생성되었습니다: {file_name}")

def to_camel_case(s):
        # 문자열을 '_' 기준으로 분리
    words = s.split('_')
    # 첫 단어는 소문자로, 나머지 단어는 첫 글자만 대문자로 변환
    return words[0].lower() + ''.join(word.capitalize() for word in words[1:])

# eg T_MBR_ACNT -> MbrAcnt
def to_class_name(s):
    # 문자열을 'T_' 기준으로 분리
    words = s.split('_')
    return ''.join(word.capitalize() for word in words[1:])


def main():
    table_name = "T_MY_TABLE"
    
    class_name = to_class_name(table_name)
    
    table_comment = get_table_comment(table_name)     # 테이블 주석
    columns = get_table_columns(table_name)
    java_code = generate_java_code(table_comment, columns, class_name)
    save_java_file(java_code,class_name)

if __name__ == "__main__":
    main()

# generate,py END ----

package kwwa.lms.bo.mbrAcnt.domain.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

// {{ table_name }} 테이블 : {{ table_comment }} 테이블
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class {{ class_name }} {
    {% for column in columns %}
    private {{ column.type }} {{ column.name }}; // {{ column.comment }} ({{ column.name2 }})
    {%- endfor %}
}

 


curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py


gitbash python

카테고리 없음 2025. 3. 24. 12:59

mvvp model

카테고리 없음 2025. 3. 21. 13:07


intellij git

2025. 3. 21. 09:53

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.