利用環境
Python 3.7.2
Visual Studio Code 1.39.1
CentOS Linux release 7.7.1908 (Core)
PostgreSQL 11.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
利用データ
上場企業一覧のCSVを
カブサポさんより配布されているものを入手し、利用する。
https://kabusapo.com/stock-data/stock-list/
テーブルの準備
CREATE TABLE t_brand
(brand_code TEXT NOT NULL,
brand_name TEXT NOT NULL,
market_name TEXT ,
Industry_class TEXT ,
num_ob_unit decimal ,
flag_225 boolean ,
PRIMARY KEY (brand_code));
ソースコード
import csv
import pprint
import psycopg2
#PostGresSQLへ接続
conn = psycopg2.connect("host=192.168.10.8 port=5432 dbname=mei_edinet_db user=mayser")
cur = conn.cursor()
#辞書として読み込み
with open('stocklist.csv', encoding="utf-8-sig") as f:
reader = csv.DictReader(f)
for row in reader:
#rowは、dictで取り出される
print(type(row))
#キーでdictにアクセス
print(row['銘柄コード'])
print(row['銘柄名'])
print(row['市場名'])
print(row['業種分類'])
print(row['単元株数'])
print(row['日経225採用銘柄'])
#日経225を、Boolean型に変更。(もっとスマートな方法がありそうだが。。。)
if (row['日経225採用銘柄'] == 1):
flg_225 = True
else:
flg_225 = False
#単元は、"単元制度なし"という文字を含む為、判定ロジック
if row['単元株数'].isdecimal() :
num_tangen = row['単元株数']
else:
num_tangen = 0
#ここから、postgresSQLへinsert
cur.execute("INSERT INTO t_brand (brand_code, brand_name, market_name, industry_class, num_ob_unit, flag_225) \
VALUES (%s, %s, %s, %s, %s, %s)", \
(row['銘柄コード'], row['銘柄名'], row['市場名'],row['業種分類'],num_tangen,flg_225))
# コミット
conn.commit()
#切断