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를 지원하지 않습니다
요구사항
소스코드
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
|
f = 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')
f = 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
'Python' 카테고리의 다른 글
파이썬 ] 다음 카페,블로그 자동포스팅 매크로만들기 (6) | 2022.12.02 |
---|---|
파이썬 수강신청 Requests (2) | 2022.03.02 |
파이썬 Post방식의 웹 크롤링하기 Request Payload vs Form Data (2) | 2021.09.06 |