RDS에 주가 정보 연속 업로드
개요 설명
RDS(MySQL)에 업로드하는 주식 CSV를 절반 자동화. 그 메모입니다.
업로드 시
모듈 및 로그인 정보 입력
import csv
import codecs
import mysql.connector
rds = 'xxxxxxxxxxx'
con = mysql.connector.connect(
host=rds,
user="xxxx",
password="xxxxx",
database='xxxx'
)
cursor = con.cursor()
UP용 메서드 만들기
def to_RDS(csvdata):
try:
with codecs.open(csvdata, "r", "Shift-JIS") as f:
reader = csv.reader(f)
header = next(reader) # 会社名情報
next(reader)
cursor.execute(f"DROP TABLE IF EXISTS `stock_table_{header[0]}`")
cursor.execute(f"""CREATE TABLE IF NOT EXISTS `stock_table_{header[0]}`(
date DATETIME PRIMARY KEY ,opening_price FLOAT, high_price FLOAT, low_price FLOAT,
closing_price FLOAT,volume FLOAT,closing_price_adjustment_value FLOAT);""")
sql = f"INSERT INTO `stock_table_{header[0]}` (date, opening_price, high_price, low_price, " \
f"closing_price, volume, closing_price_adjustment_value) VALUES (%s, %s, %s, %s, %s, %s, %s);"
for row in reader:
cursor.execute(sql, (row[0], row[1], row[2], row[3], row[4], row[5], row[6]))
con.commit()
except mysql.connector.Error as e:
print("Error code:", e.errno) # error number
print("SQLSTATE value:", e.sqlstate) # SQLSTATE value
print("Error message:", e.msg) # error message
print("Error:", e) # errno, sqlstate, msg values
s = str(e)
print("Error:", s)
cursor.close()
con.close()
대본의 CSV를 파일을 보면 회사명 정보가 (0,0)에 들어가 있으므로, 취득한 header
를 header[0]}
로서 테이블명에 회사 정보를 넣고 있습니다. 1 "Shift-JIS"
는 인코딩입니다.
다운로드 시
DOWN용 메서드
def get_RDS(cname):
sql = f'select * from `stock_table_{cname}`'
cursor.execute(sql)
for row in cursor.fetchall():
print('date', row[0], 'opening_price', row[1],
'high_price', row[2], 'low_price', row[3],
'closing_price', row[4], 'volume', row[5],
'closing_price_adjustment_value', row[6])
get_RDS('6433 東証JQS ヒーハイスト精工(株)(機械)')
cursor.close()
con.close()
'''
結果
date 2018-01-04 00:00:00 opening_price 585.0 high_price 589.0 low_price 569.0 closing_price 580.0 volume 172100.0 closing_price_adjustment_value 580.0
date 2018-01-05 00:00:00 opening_price 586.0 high_price 619.0 low_price 586.0 closing_price 613.0 volume 337200.0 closing_price_adjustment_value 613.0
date 2018-01-09 00:00:00 opening_price 634.0 high_price 649.0 low_price 614.0 closing_price 626.0 volume 215300.0 closing_price_adjustment_value 626.0
...
연속 업 할 수 있었던 것 같습니다.
그건 그렇고,이 주가 CSV 파일은
주식 투자 메모
를 사용했습니다.
데이터의 업은 반자동화 할 수 있었으므로 이것을 어떻게 web로 출력하는지 생각 중 ...
사실은 Python 형식 형식이 아닌 SQL 구문 형식을 사용하여 삽입하는 것이 좋습니다. ↩
Reference
이 문제에 관하여(RDS에 주가 정보 연속 업로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rakko_no_learning/items/0d51365a766a8120e769
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import csv
import codecs
import mysql.connector
rds = 'xxxxxxxxxxx'
con = mysql.connector.connect(
host=rds,
user="xxxx",
password="xxxxx",
database='xxxx'
)
cursor = con.cursor()
def to_RDS(csvdata):
try:
with codecs.open(csvdata, "r", "Shift-JIS") as f:
reader = csv.reader(f)
header = next(reader) # 会社名情報
next(reader)
cursor.execute(f"DROP TABLE IF EXISTS `stock_table_{header[0]}`")
cursor.execute(f"""CREATE TABLE IF NOT EXISTS `stock_table_{header[0]}`(
date DATETIME PRIMARY KEY ,opening_price FLOAT, high_price FLOAT, low_price FLOAT,
closing_price FLOAT,volume FLOAT,closing_price_adjustment_value FLOAT);""")
sql = f"INSERT INTO `stock_table_{header[0]}` (date, opening_price, high_price, low_price, " \
f"closing_price, volume, closing_price_adjustment_value) VALUES (%s, %s, %s, %s, %s, %s, %s);"
for row in reader:
cursor.execute(sql, (row[0], row[1], row[2], row[3], row[4], row[5], row[6]))
con.commit()
except mysql.connector.Error as e:
print("Error code:", e.errno) # error number
print("SQLSTATE value:", e.sqlstate) # SQLSTATE value
print("Error message:", e.msg) # error message
print("Error:", e) # errno, sqlstate, msg values
s = str(e)
print("Error:", s)
cursor.close()
con.close()
def get_RDS(cname):
sql = f'select * from `stock_table_{cname}`'
cursor.execute(sql)
for row in cursor.fetchall():
print('date', row[0], 'opening_price', row[1],
'high_price', row[2], 'low_price', row[3],
'closing_price', row[4], 'volume', row[5],
'closing_price_adjustment_value', row[6])
get_RDS('6433 東証JQS ヒーハイスト精工(株)(機械)')
cursor.close()
con.close()
'''
結果
date 2018-01-04 00:00:00 opening_price 585.0 high_price 589.0 low_price 569.0 closing_price 580.0 volume 172100.0 closing_price_adjustment_value 580.0
date 2018-01-05 00:00:00 opening_price 586.0 high_price 619.0 low_price 586.0 closing_price 613.0 volume 337200.0 closing_price_adjustment_value 613.0
date 2018-01-09 00:00:00 opening_price 634.0 high_price 649.0 low_price 614.0 closing_price 626.0 volume 215300.0 closing_price_adjustment_value 626.0
...
Reference
이 문제에 관하여(RDS에 주가 정보 연속 업로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rakko_no_learning/items/0d51365a766a8120e769텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)