데이터베이스 관련 파일을 conf 로 위치 변경
This commit is contained in:
21
conf/db.py
Normal file
21
conf/db.py
Normal file
@ -0,0 +1,21 @@
|
||||
# db.py
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
import yaml
|
||||
|
||||
def load_config(path='conf/config.yaml'):
|
||||
with open(path, 'r', encoding='utf-8') as f:
|
||||
return yaml.safe_load(f)
|
||||
|
||||
config = load_config()
|
||||
db_cfg = config['database']
|
||||
|
||||
db_url = f"mysql+pymysql://{db_cfg['user']}:{db_cfg['password']}@{db_cfg['host']}/{db_cfg['name']}?charset=utf8mb4"
|
||||
|
||||
# MySQL 연결이 끊겼을 때 자동 재시도
|
||||
engine = create_engine(db_url, pool_pre_ping=True)
|
||||
Session = sessionmaker(bind=engine)
|
||||
|
||||
def get_session():
|
||||
return Session()
|
||||
148
conf/db_schema.py
Normal file
148
conf/db_schema.py
Normal file
@ -0,0 +1,148 @@
|
||||
# lib/db_schema.py
|
||||
from sqlalchemy import Table, Column, Date, Float, Integer, String, Text, MetaData
|
||||
|
||||
metadata = MetaData()
|
||||
|
||||
# 날짜별 메트릭
|
||||
fg_manager_static_ga4_by_date = Table(
|
||||
'fg_manager_static_ga4_by_date', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('activeUsers', Integer),
|
||||
Column('screenPageViews', Integer),
|
||||
Column('sessions', Integer),
|
||||
)
|
||||
|
||||
# 날짜 + 유입 소스별 세션
|
||||
fg_manager_static_ga4_by_source = Table(
|
||||
'fg_manager_static_ga4_by_source', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('sessionSource', String(255), primary_key=True),
|
||||
Column('sessions', Integer),
|
||||
)
|
||||
|
||||
# 날짜 + 유입 매체별 세션
|
||||
fg_manager_static_ga4_by_medium = Table(
|
||||
'fg_manager_static_ga4_by_medium', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('sessionMedium', String(255), primary_key=True),
|
||||
Column('sessions', Integer),
|
||||
)
|
||||
|
||||
# 날짜 + 장치 카테고리별 activeUsers
|
||||
fg_manager_static_ga4_by_device = Table(
|
||||
'fg_manager_static_ga4_by_device', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('deviceCategory', String(255), primary_key=True),
|
||||
Column('activeUsers', Integer),
|
||||
)
|
||||
|
||||
# 날짜 + 국가별 activeUsers
|
||||
fg_manager_static_ga4_by_country = Table(
|
||||
'fg_manager_static_ga4_by_country', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('country', String(255), primary_key=True),
|
||||
Column('activeUsers', Integer),
|
||||
)
|
||||
|
||||
# 날짜 + 도시별 activeUsers
|
||||
fg_manager_static_ga4_by_city = Table(
|
||||
'fg_manager_static_ga4_by_city', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('city', String(255), primary_key=True),
|
||||
Column('activeUsers', Integer),
|
||||
)
|
||||
|
||||
|
||||
|
||||
fg_manager_static_air = Table(
|
||||
'fg_manager_static_air',
|
||||
metadata,
|
||||
Column('date', Date, primary_key=True, nullable=False),
|
||||
Column('station', String(32), nullable=False), # 🔹 추가됨
|
||||
Column('pm25', Float),
|
||||
Column('pm10', Float),
|
||||
Column('so2', Float),
|
||||
Column('co', Float),
|
||||
Column('no2', Float),
|
||||
Column('o3', Float),
|
||||
)
|
||||
|
||||
fg_manager_static_weather = Table(
|
||||
'fg_manager_static_weather',
|
||||
metadata,
|
||||
Column('date', Date, primary_key=True, nullable=False),
|
||||
Column('stnId', Integer, nullable=False),
|
||||
Column('avgTa', Float),
|
||||
Column('minTa', Float),
|
||||
Column('minTaHrmt', String(4)),
|
||||
Column('maxTa', Float),
|
||||
Column('maxTaHrmt', String(4)),
|
||||
Column('sumRnDur', Float),
|
||||
Column('mi10MaxRn', Float),
|
||||
Column('mi10MaxRnHrmt', String(4)),
|
||||
Column('hr1MaxRn', Float),
|
||||
Column('hr1MaxRnHrmt', String(4)),
|
||||
Column('sumRn', Float),
|
||||
Column('maxInsWs', Float),
|
||||
Column('maxInsWsWd', Integer),
|
||||
Column('maxInsWsHrmt', String(4)),
|
||||
Column('maxWs', Float),
|
||||
Column('maxWsWd', Integer),
|
||||
Column('maxWsHrmt', String(4)),
|
||||
Column('avgWs', Float),
|
||||
Column('hr24SumRws', Float),
|
||||
Column('maxWd', Integer),
|
||||
Column('avgTd', Float),
|
||||
Column('minRhm', Float),
|
||||
Column('minRhmHrmt', String(4)),
|
||||
Column('avgRhm', Float),
|
||||
Column('avgPv', Float),
|
||||
Column('avgPa', Float),
|
||||
Column('maxPs', Float),
|
||||
Column('maxPsHrmt', String(4)),
|
||||
Column('minPs', Float),
|
||||
Column('minPsHrmt', String(4)),
|
||||
Column('avgPs', Float),
|
||||
Column('ssDur', Float),
|
||||
Column('sumSsHr', Float),
|
||||
Column('hr1MaxIcsrHrmt', String(4)),
|
||||
Column('hr1MaxIcsr', Float),
|
||||
Column('sumGsr', Float),
|
||||
Column('ddMefs', Float),
|
||||
Column('ddMefsHrmt', String(4)),
|
||||
Column('ddMes', Float),
|
||||
Column('ddMesHrmt', String(4)),
|
||||
Column('sumDpthFhsc', Float),
|
||||
Column('avgTca', Float),
|
||||
Column('avgLmac', Float),
|
||||
Column('avgTs', Float),
|
||||
Column('minTg', Float),
|
||||
Column('avgCm5Te', Float),
|
||||
Column('avgCm10Te', Float),
|
||||
Column('avgCm20Te', Float),
|
||||
Column('avgCm30Te', Float),
|
||||
Column('avgM05Te', Float),
|
||||
Column('avgM10Te', Float),
|
||||
Column('avgM15Te', Float),
|
||||
Column('avgM30Te', Float),
|
||||
Column('avgM50Te', Float),
|
||||
Column('sumLrgEv', Float),
|
||||
Column('sumSmlEv', Float),
|
||||
Column('n99Rn', Float),
|
||||
Column('iscs', Text),
|
||||
Column('sumFogDur', Float),
|
||||
)
|
||||
|
||||
fg_manager_static_ga4 = Table(
|
||||
'fg_manager_static_ga4', metadata,
|
||||
Column('date', Date, primary_key=True),
|
||||
Column('source', String(255), primary_key=True),
|
||||
Column('medium', String(255), primary_key=True),
|
||||
Column('deviceCategory', String(50), primary_key=True),
|
||||
Column('country', String(100), primary_key=True),
|
||||
Column('city', String(100), primary_key=True),
|
||||
Column('activeUsers', Integer),
|
||||
Column('screenPageViews', Integer),
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8mb4'
|
||||
)
|
||||
Reference in New Issue
Block a user