RDS에 주가 정보 연속 업로드

10871 단어 파이썬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)에 들어가 있으므로, 취득한 headerheader[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 구문 형식을 사용하여 삽입하는 것이 좋습니다.

좋은 웹페이지 즐겨찾기