주가 일봉 데이터 저장 프로그램 코드 및 파일
< 주가 일봉 데이터 저장 프로그램 > "주가 일봉 데이터 저장 프로그램"은 종목의 일봉 데이터('시가', '고가', '저가', '종가', '거래량) 를 DB 또는 엑셀에 저장한다. 물론 일봉 데이터 기간은 종목의 상장 이후..
programmingfbf7290.tistory.com
Programming님이 올려주신 파일로 나는 DB를 사용할 수 없었다.
왜?
StockDB.py에 쓰여진 코드에서 자신이 MySQL 설치시 설정한 비밀번호와 다르기 때문이다.
from sqlalchemy import create_engine
import pymysql
pymysql.install_as_MySQLdb()
import pandas as pd
class StockDB():
def init(self, password):
if self._create_database(password) is False:
return False
self.engine = create_engine("mysql+mysqldb://root:"+password+"@localhost/stock", encoding='utf-8')
self.conn = pymysql.connect(host='localhost', user='root', password=password, db='stock', charset='utf8')
self.cursor = self.conn.cursor()
return True
def _create_database(self,password):
try:
conn = pymysql.connect(host='localhost', user='root', password=password, charset='utf8')
cursor = conn.cursor()
sql = 'SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \'stock\''
result = cursor.execute(sql)
if result == 0:
sql = 'CREATE DATABASE stock'
cursor.execute(sql)
conn.commit()
except:
return False
return True
def close(self):
self.conn.close()
def select_max_date(self,table_name):
sql = 'select max(Date) from ' + table_name
self.cursor.execute(sql)
result = self.cursor.fetchone()
return result[0]
def insert_chart(self,data, table_name):
data.to_sql(name=table_name, con=self.engine, if_exists='append')
self.conn.commit()
def create_table(self,table_name):
sql = 'SHOW TABLES LIKE \'' + table_name + '\''
result = self.cursor.execute(sql)
if result == 0:
sql = 'create table ' + table_name + '(Date date primary key,Open Decimal,High Decimal,Low Decimal,Close Decimal, Volume Decimal);'
self.cursor.execute(sql)
self.conn.commit()
따라서 Programming님의 위의 코드 중에서 password 부분을 내가 MySQL에 설정한 1234로 바꾸자
코드는 아래와 같다.
from sqlalchemy import create_engine
import pymysql
pymysql.install_as_MySQLdb()
class StockDB():
def init(self, password):
if self._create_database(password) is False:
return False
self.engine = create_engine("mysql+mysqldb://root:"+password+"@localhost/stock", encoding='utf-8')
self.conn = pymysql.connect(host='localhost', user='root', password='1234', db='stock', charset='utf8')
self.cursor = self.conn.cursor()
return True
def _create_database(self,password):
try:
conn = pymysql.connect(host='localhost', user='root', password='1234', charset='utf8')
cursor = conn.cursor()
sql = 'SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \'stock\''
result = cursor.execute(sql)
if result == 0:
sql = 'CREATE DATABASE stock'
cursor.execute(sql)
conn.commit()
except:
return False
return True
def close(self):
self.conn.close()
def select_max_date(self,table_name):
sql = 'select max(Date) from ' + table_name
self.cursor.execute(sql)
result = self.cursor.fetchone()
return result[0]
def insert_chart(self,data, table_name):
data.to_sql(name=table_name, con=self.engine, if_exists='append')
self.conn.commit()
def create_table(self,table_name):
sql = 'SHOW TABLES LIKE \'' + table_name + '\''
result = self.cursor.execute(sql)
if result == 0:
sql = 'create table ' + table_name + '(Date date primary key,Open Decimal,High Decimal,Low Decimal,Close Decimal, Volume Decimal);'
self.cursor.execute(sql)
self.conn.commit()
바뀐 건 비밀번호 밖에 없다. 그럼에도 전체 코드를 다 입력한 것은 나같은 초보자에게 어떤 부분을 어떻게 바꾸라는 것 자체가 쉽지 않기 때문이다.