From 97e2f8190cf7e69c0a80f94d1a86cc96321a84f0 Mon Sep 17 00:00:00 2001 From: ayuriel Date: Fri, 31 Jan 2025 16:22:23 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20common=20class=20=EC=B6=94=EA=B0=80,?= =?UTF-8?q?=20db=20=EC=A0=91=EC=86=8D=20=EC=8B=9C=20common=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/10-calculate-stock-value.py | 27 +++++----------------- example/10-financial-statements.py | 28 ++++++----------------- example/10-stock-data.py | 20 ++++------------- example/10-stock-price.py | 35 +++++++++-------------------- example/quantcommon.py | 28 +++++++++++++++++++++++ 5 files changed, 56 insertions(+), 82 deletions(-) create mode 100644 example/quantcommon.py diff --git a/example/10-calculate-stock-value.py b/example/10-calculate-stock-value.py index 0e94d1d..d21d9d8 100644 --- a/example/10-calculate-stock-value.py +++ b/example/10-calculate-stock-value.py @@ -1,29 +1,14 @@ # 패키지 불러오기 -import os -from urllib.parse import quote_plus - -import pymysql -from sqlalchemy import create_engine -import pandas as pd import numpy as np -from dotenv import load_dotenv +import pandas as pd -load_dotenv() -user = os.getenv('DB_USER') -pw = os.getenv('DB_PW') -engine_for_pw = quote_plus(pw) -host = os.getenv('DB_HOST') -port = int(os.getenv('DB_PORT')) -db = os.getenv('DB_DB') +import quantcommon # DB 연결 -engine = create_engine(f'mysql+pymysql://{user}:{engine_for_pw}@{host}:{port}/{db}') -con = pymysql.connect(user=user, - passwd=pw, - host=host, - port=port, - db=db, - charset='utf8') +common = quantcommon.QuantCommon() +engine = common.create_engine() +con = common.connect() + mycursor = con.cursor() # 가치 지표 계산 # 분기 재무제표 불러오기 diff --git a/example/10-financial-statements.py b/example/10-financial-statements.py index 3bac881..2eded4c 100644 --- a/example/10-financial-statements.py +++ b/example/10-financial-statements.py @@ -1,32 +1,18 @@ -import os -from urllib.parse import quote_plus +import re +import time -import pymysql -from sqlalchemy import create_engine import pandas as pd import requests as rq from bs4 import BeautifulSoup -import re from tqdm import tqdm -import time -from dotenv import load_dotenv -load_dotenv() -user = os.getenv('DB_USER') -pw = os.getenv('DB_PW') -engine_for_pw = quote_plus(pw) -host = os.getenv('DB_HOST') -port = int(os.getenv('DB_PORT')) -db = os.getenv('DB_DB') +import quantcommon # DB 연결 -engine = create_engine(f'mysql+pymysql://{user}:{engine_for_pw}@{host}:{port}/{db}') -con = pymysql.connect(user=user, - passwd=pw, - host=host, - port=port, - db=db, - charset='utf8') +common = quantcommon.QuantCommon() +engine = common.create_engine() +con = common.connect() + mycursor = con.cursor() # 제무재표 크롤링 diff --git a/example/10-stock-data.py b/example/10-stock-data.py index 5dcea7f..80d9529 100644 --- a/example/10-stock-data.py +++ b/example/10-stock-data.py @@ -1,5 +1,3 @@ -import logging -import os import re import time from io import BytesIO @@ -9,8 +7,8 @@ import pandas as pd import requests as rq from tqdm import tqdm from bs4 import BeautifulSoup -import pymysql from dotenv import load_dotenv +import quantcommon load_dotenv() @@ -125,12 +123,7 @@ def process_for_total_stock(biz_day): def save_ticker(ticker): - con = pymysql.connect(user=os.getenv('DB_USER'), - passwd=os.getenv('DB_PW'), - host=os.getenv('DB_HOST'), - port=int(os.getenv('DB_PORT')), - db=os.getenv('DB_DB'), - charset='utf8') + con = quantcommon.QuantCommon().connect() mycursor = con.cursor() query = f""" @@ -175,12 +168,7 @@ def process_for_wics(biz_day): def save_sector(sector): - con = pymysql.connect(user=os.getenv('DB_USER'), - passwd=os.getenv('DB_PW'), - host=os.getenv('DB_HOST'), - port=int(os.getenv('DB_PORT')), - db=os.getenv('DB_DB'), - charset='utf8') + con = quantcommon.QuantCommon().connect() mycursor = con.cursor() query = f""" @@ -201,4 +189,4 @@ def save_sector(sector): if __name__ == '__main__': latest_biz_day = get_latest_biz_day() process_for_total_stock(latest_biz_day) - # process_for_wics(latest_biz_day) + process_for_wics(latest_biz_day) diff --git a/example/10-stock-price.py b/example/10-stock-price.py index 5feef79..c5c4d03 100644 --- a/example/10-stock-price.py +++ b/example/10-stock-price.py @@ -1,34 +1,21 @@ # 패키지 불러오기 -import os -from urllib.parse import quote_plus -import pymysql -from sqlalchemy import create_engine -import pandas as pd -from datetime import date -from dateutil.relativedelta import relativedelta -import requests as rq import time -from tqdm import tqdm +from datetime import date from io import BytesIO -from dotenv import load_dotenv -load_dotenv() -user = os.getenv('DB_USER') -pw = os.getenv('DB_PW') -engine_for_pw = quote_plus(pw) -host = os.getenv('DB_HOST') -port = int(os.getenv('DB_PORT')) -db = os.getenv('DB_DB') +import pandas as pd +import requests as rq +from dateutil.relativedelta import relativedelta +from tqdm import tqdm + +import quantcommon # DB 연결 -engine = create_engine(f'mysql+pymysql://{user}:{engine_for_pw}@{host}:{port}/{db}') -con = pymysql.connect(user=user, - passwd=pw, - host=host, - port=port, - db=db, - charset='utf8') +common = quantcommon.QuantCommon() +engine = common.create_engine() +con = common.connect() + mycursor = con.cursor() # 티커리스트 불러오기 diff --git a/example/quantcommon.py b/example/quantcommon.py new file mode 100644 index 0000000..3990fa8 --- /dev/null +++ b/example/quantcommon.py @@ -0,0 +1,28 @@ +import os +from urllib.parse import quote_plus + +import pymysql +from dotenv import load_dotenv +from sqlalchemy import create_engine + + +class QuantCommon: + def __init__(self): + load_dotenv() + self.user = os.getenv('DB_USER') + self.pw = os.getenv('DB_PW') + self.engine_for_pw = quote_plus(self.pw) + self.host = os.getenv('DB_HOST') + self.port = int(os.getenv('DB_PORT')) + self.db = os.getenv('DB_DB') + + def create_engine(self): + return create_engine(f'mysql+pymysql://{self.user}:{self.engine_for_pw}@{self.host}:{self.port}/{self.db}') + + def connect(self): + return pymysql.connect(user=self.user, + passwd=self.pw, + host=self.host, + port=self.port, + db=self.db, + charset='utf8')