【Python】bitflyer の Ticker を MySQL に突っ込む
おはようございます。
昨日に引き続き、今回はTicker のデータをMySQLに登録してみます。
基本的に SQLite でやったことなんでサクッと。
プログラムは以前の記事を流用します。
【Python】BitflyerのTickerをSQLiteに突っ込む
スポンサーリンク
新規クラス作成
SQLiteUtil.py をコピーしてクラス名を変更し、処理の内容を MySQL ように書き換える。
MySQLUtil.py
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | importmysql.connector importlogging fromcontextlibimportclosing classMySQLUtil: """ MySQL 操作用クラス """ def__init__(self,host="localhost",port="3306",user="USER01",password="USER01",database="DB01"): self.config={ "host":host, "port":port, "user":user, "password":password, "database":database } self.create_db() defcreate_db(self): """ データベース、及び必要なテーブルを作成します. :return: """ logging.info("create database") withclosing(mysql.connector.connect(**self.config))asconn: c=conn.cursor() # ティッカーテーブル sql="CREATE TABLE IF NOT EXISTS TBL_TICKER (" sql+=" PRODUCT_CODE VARCHAR(20)" sql+=", TIME_STAMP DATETIME" sql+=", TICK_ID VARCHAR(10)" sql+=", BEST_BID VARCHAR(20)" sql+=", BEST_ASK VARCHAR(20)" sql+=", BEST_BID_SIZE VARCHAR(20)" sql+=", BEST_ASK_SIZE VARCHAR(20)" sql+=", TOTAL_BID_DEPTH VARCHAR(20)" sql+=", TOTAL_ASK_DEPTH VARCHAR(20)" sql+=", LTP VARCHAR(20)" sql+=", VOLUME VARCHAR(20)" sql+=", VOLUME_BY_PRODUCT VARCHAR(20)" sql+=", PRIMARY KEY (TICK_ID)" sql+=")" c.execute(sql) c.close() conn.commit() defdelete_data(self): """ データを削除します :return: """ logging.info("delete_data") withclosing(mysql.connector.connect(**self.config))asconn: c=conn.cursor() # データクリア sql="DELETE FROM TBL_TICKER" c.execute(sql) c.close() conn.commit() definsert_data(self,ticker): """ データを登録します :param ticker: :return: """ withclosing(mysql.connector.connect(**self.config))asconn: c=conn.cursor() # データ登録 sql="INSERT INTO TBL_TICKER VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" c.execute(sql,ticker) c.close() conn.commit() |
プログラムの修正
Ticker 保存処理の修正
BfApi.py
1 2 3 4 5 6 7 8 | defsave_ticker(self,message): """ ティッカー情報をデータベースに保存 :param message: :return: """ mysql=MySQLUtil() mysql.insert_data(self.convert_ticker_tuple(message.message)) |
起動してデータを確認
無事にデータ登録されましたね。
まとめ
これでデータ登録中でも検索処理なんかは普通にできるんじゃないかと思います。
次回は pandas を使って保存したデータに対して何かやってみる予定です。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません