파이썬으로 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
'Utils' 카테고리의 다른 글
엑셀에 데이터 입력하기 - DB 명세서 엑셀 자동화 (3) | Python (0) | 2025.01.10 |
---|---|
DB 접속하기 - DB 명세서 엑셀 자동화 (1) | Python (0) | 2025.01.03 |
IntersectionObserver를 이용한 scroll detector | Javascript (0) | 2024.10.30 |
랜덤 숫자 롤링 후 앞자리부터 맞추는 숫자 롤링 카운터 만들기 | HTML, Javascript, jQuery (0) | 2024.08.02 |
각 자릿수별로 1씩 증가하는 숫자 롤링 카운터 만들기 | HTML, Javascript, jQuery (0) | 2024.07.24 |