728x90

필요 모듈 

1
2
3
import FinanceDataReader as fdr
import pymysql
import csv
cs

 

FinanceDataReader은 FinanceData.KR 에서 만든 오픈소스 금융 데이터 수집 라이브러리 이다.

 

 

  • 한국거래소(KRX)에 상장된 주식종목 리스트와 코넥스(비상장)에 있는 주식종목 리스트: 'KRX', 'KOSPI', 'KODAQ', 'KONEX'
  • 글로벌 주식종목 리스트: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍콩), 'TSE'(도쿄)
  • 개별 종목은 물론 금,원유 같은 원자재 지수도 지원한다. 

설치

pip install finance-datareader
pip install pymysql
pip install csv


참고 PyMySQL는 낮은 수준의 API를 지원하지 않습니다 

요구사항 

  • 파이썬 – 다음 중 하나:
  • MySQL 서버 – 다음 중 하나:

 

소스코드



1

2
3

 
conn = pymysql.connect(host="uws7-176.cafe24.com",user="아이디"
,password="패스워드",db="soll0803",charset="utf8")
curs=conn.cursor()
conn.commit()
cs

 

● pymysql.connect() 메소드를 이용하여 SQL에 연결 

host : 접속할 서버 주소

port : 접속할 서버 포트번호

user : sql id

password : sql password

db : 접속할 데이터베이스

charset : 인코딩

 

● line 1에서 접속이 성공하였다면 conn 객체로부터 cursor()메서드를 호출하여 cursor 객체를 가져옴

 

4
5
 
df = fdr.DataReader(symbol="005930",start='2000'#종목코드 005930 -> 삼성전자
df.to_csv('test.csv') #df를 csv파일로 저장
 
 
cs

#type(df) -> dataframe

 

6
7
= open('test.csv','r') #파일읽기모드
csvReader = csv.reader(f) #csvReader객체 생성
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
for row in csvReader:
    Date1 = (row[0])
    Open1 = row[1]
    High1 = row[2]
    Low1 = row[3]
    Close1 = row[4]
    Volume1 = row[5]
    Change1 = row[6]
 
    sql = "INSERT INTO stock_data (Date,Open,High,Low,Close,Volume,Change2) values(%s,%s,%s,%s,%s,%s,%s)"
    curs.execute(sql,(Date1,Open1,High1,Low1,Close1,Volume1,Change1))

conn.commit()
f.close()
conn.close()

 
cs

curs.execute를통해 sql문 실행 

 

전체소스 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import FinanceDataReader as fdr
import pymysql
import csv
 
#삼성전자 주가데이터2020~오늘 데이터를 csv로 변환
#df = fdr.DataReader(symbol="005930",start='2020')
#df.to_csv('test.csv')
 
conn = pymysql.connect(host="uws7-176.cafe24.com",
user="아이디",password="패스워드",db="soll0803",charset="utf8")
curs=conn.cursor()
conn.commit()
 
df = fdr.DataReader(symbol="005930",start='2000'#종목코드 005930 -> 삼성전자
df.to_csv('test.csv')
 
= open('test.csv','r')
csvReader = csv.reader(f)
 
for row in csvReader:
    Date1 = (row[0])
    Open1 = row[1]
    High1 = row[2]
    Low1 = row[3]
    Close1 = row[4]
    Volume1 = row[5]
    Change1 = row[6]
 
    sql = "INSERT INTO stock_data (Date,Open,High,Low,Close,Volume,Change2) values(%s,%s,%s,%s,%s,%s,%s)"
    curs.execute(sql,(Date1,Open1,High1,Low1,Close1,Volume1,Change1))
conn.commit()
f.close()
conn.close()
cs

 

결과

728x90

+ Recent posts