56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
import os
|
|
from urllib.parse import quote_plus
|
|
|
|
import pandas as pd
|
|
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')
|
|
|
|
def get_ticker_list(self):
|
|
engine = self.create_engine()
|
|
|
|
try:
|
|
ticker_list = pd.read_sql("""
|
|
select * from kor_ticker
|
|
where 기준일 = (select max(기준일) from kor_ticker)
|
|
and 종목구분 = '보통주';
|
|
""", con=engine)
|
|
finally:
|
|
engine.dispose()
|
|
|
|
return ticker_list
|
|
|
|
def get_value_list(self):
|
|
engine = self.create_engine()
|
|
|
|
try:
|
|
value_list = pd.read_sql("""
|
|
select * from kor_value
|
|
where 기준일 = (select max(기준일) from kor_value);
|
|
""", con=engine)
|
|
finally:
|
|
engine.dispose()
|
|
|
|
return value_list |