Database초보우낙
28-2. 홈페이지 구현하기 본문
홈페이지 구현하기
ngrok을 이용하면 로컬의 홈페이지를 세계 어디서든 볼 수 있는 홈페이지로 생성할 수 있습니다. 우리 회사에 직원들이 모두 이 홈페이지에서 오라클 데이터 베이스의 테이블 정의서를 열람할 수 있게 됩니다
ngrok 설치 및 설정 방법
- ngrok 설치:
- ngrok 공식 웹사이트에서 ngrok을 다운로드하고 설치합니다.
토큰키 =>
ngrok config add-authtoken 2fZg7abHe5yqd7i2iG4mHMUNhA4_7tTvsH1UoW5ePi6GAYZ8P
ngrok http http://localhost:8080
다운로드 받은 파일을 압축해제 후 실행
다음의 명령어로 ngrok인증을 합니다(위에서 복사해둔 토큰키)
ngrok config add-authtoken 2fZg7abHe5yqd7i2iG4mHMUNhA4_7tTvsH1UoW5ePi6GAYZ8P
ngrok http 8501
ngrok http http://localhost:8080
스트리밋을 먼저 실행후 ngrok를 실행
import cx_Oracle
import pandas as pd
import streamlit as st
def fetch_tables(owner): # 유져명을 넣으면 테이블명 리스트가 출력되는 함수
# 오라클 접속 정보 3줄을 기술합니다.
dsn = cx_Oracle.makedsn('192.168.19.14', 8081, 'orcl')
db = cx_Oracle.connect('system', 'oracle_4U', dsn)
cursor = db.cursor()
# 유져명을 넣으면 해당 유져의 테이블 리스트를 출력하는 코드
query = """
SELECT table_name FROM all_tables WHERE owner = :owner ORDER BY table_name
"""
cursor.execute(query, owner=owner.upper())
rows = cursor.fetchall()
cursor.close()
db.close()
# 테이블명을 리스트 변수에 담아서 리턴합니다.
return [row[0] for row in rows]
def table_def(table_name):
import cx_Oracle
import pandas as pd
import streamlit as st
# Connection details
dsn = cx_Oracle.makedsn('192.168.19.14', 8081, 'orcl')
db = cx_Oracle.connect('system', 'oracle_4U', dsn)
cursor = db.cursor()
# Execute SQL query
query = f"""
SELECT A.COLUMN_ID AS NO
, B.COMMENTS AS "논리명"
, A.COLUMN_NAME AS "물리명"
, A.DATA_TYPE AS "자료형태"
, A.DATA_LENGTH AS "길이"
, DECODE(A.NULLABLE, 'N', 'No', 'Y', 'Yes') AS "Null허용"
, A.DATA_DEFAULT AS "기본값"
FROM ALL_TAB_COLUMNS A
LEFT JOIN ALL_COL_COMMENTS B
ON A.OWNER = B.OWNER
AND A.TABLE_NAME = B.TABLE_NAME
AND A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_NAME = :tbl_name
ORDER BY A.COLUMN_ID
"""
cursor.execute(query, tbl_name=table_name.upper())
# Fetch data and metadata for column names
rows = cursor.fetchall()
columns = [col[0] for col in cursor.description] # Get column names from description
# Create DataFrame with correct column names
df = pd.DataFrame(rows, columns=columns)
cursor.close() # It's good practice to close cursor and connection
db.close()
return df
st.title('테이블 정의서 조회')
selected_owner=st.selectbox("DB 유져명을 선택하세요:", ['SCOTT','SH','HR','OE'])
table_names = fetch_tables(selected_owner)
selected_table = st.selectbox("테이블을 선택하세요:", table_names)
if selected_table: # selected_table 변수에 값이 있다면 true 입니다.
table_info = table_def(selected_table) # table_def 함수에 테이블명을 넣어서
if not table_info.empty: # 만약에 table_info변수가 비어있지 않다면
st.dataframe(table_info , width=1000) # 테이블 정의서를 홈페이지에 출력해라
else:
st.write("입력한 테이블에 대한 정보가 없습니다")
'파이썬' 카테고리의 다른 글
28. 테이블 정의서 홈페이지 만들기 (0) | 2024.04.25 |
---|---|
28. 테이블 정의서 홈페이지 만들기 (0) | 2024.04.25 |
27. DBA의 DB관리 문서 생성을 파이썬으로 쉽게 구현하 (0) | 2024.04.24 |
26. undo tablespace와 temp tablespace의 사용량만 집중적으로 시각화 (0) | 2024.04.22 |
25. LAV128 활용하는 팁 2 (0) | 2024.04.22 |