본문 바로가기

Utils

테이블, 컬럼 정보 조회하기 - DB 명세서 엑셀 자동화 (2) | Python

테이블, 컬럼 정보 조회하기 - DB 명세서 엑셀 자동화 (2) ❘ Python

 

파이썬으로 DB 명세서 엑셀 자동화하기 (2) - 테이블 정보, 컬럼 정보 조회하기

 

DB에 접근하여 테이블 정보, 컬럼 정보를 조회합니다.


테이블명 리스트 조회

테이블명 리스트를 조회하는 SQL을 작성하여 실행합니다.

# MySQL
sql = f"""SELECT TABLES FROM {schema}"""
# Oracle
sql = f"""
	SELECT * 
    FROM ALL_TABLES AT
    LEFT JOIN ALL_TAB_COMMENTS ATC
    ON AT.TABLE_NAME = ATC.TABLE_NAME
    AND AT.OWNER = '{DbConfig.USER}'
	"""

# 쿼리 실행
cursor.execute(sql)
tables = cursor.fetchall()

 

테이블 정보 조회

조회한 테이블명으로 테이블 정보를 조회하는 SQL을 작성하여 실행합니다.

for t in tables:
	# MySQL
	sql = f"""
    	SELECT * FROM INFORMATION_SCHEMA.TABLES
        WHERE TABLE_NAME = {t}
    	"""
    # Oracle
    sql = f"""
    	SELECT
        	AT.TABLE_NAME
            , AT.TABLESPACE_NAME
            , AT.OWNER
            , ATC.COMMENTS
        FROM ALL_TABLES AT
        LEFT JOIN ALL_TAB_COMMENTS ATC
        ON AT.TABLE_NAME = ATC.TABLE_NAME
        WHERE AT.TABLE_NAEM = '{t}'
        AND AT.OWNER = '{DbConfig.USER}'
    	"""
    
    # 쿼리 실행
    cursor.execute(sql)
    table_info = cursor.fetchone()

 

컬럼 정보 조회

해당 테이블의 컬럼 정보를 조회하는 SQL을 작성하고 실행합니다.

# MySQL
sql = f"""
	SHOW FULL COLUMNS FROM {t.upper()}
	"""
# Oracle
sql = f"""
	SELECT *
    FROM ALL_TAB_COLUMNS
    WHERE TABLE_NAME = '{t}'
	"""

# 쿼리 실행
cursor.execute(sql)
column_list = cursor.fetchall()

 

💡cursor.fetchall()은 List[dict] 타입으로, cursor.fetchone()은 dict 타입으로 반환됩니다.
728x90