-自動更新資料庫
目录
延續上集我們學到的TEJ API資料撈取/存取/使用操作說明,本集以資料庫更新的自動化教學為主,與上一次的教學是連貫的,所以還沒觀看上集的朋友們請先回頭觀看新手上路(一)~
連結任意門 :【新手上路(一)】透過TEJ API打造自己的資料庫
首先我們要先在Python上面安裝會用到的套件tejapi、datetime、sqlite3
pip install tejapi
pip install datetime
pip install sqlite3
已經安裝過的朋友就可以直接import 套件啦 😄~
import tejapi
import datetime
import sqlite3
安裝完成後一定要再import套件,並設定好自己的api_key,如果還沒有api_key的話,可以在TEJ API官網上🆓免費註冊試用版🆓,不過要注意的是,試用能取得的資料範圍有所限制噢 ❗️
import tejapi
tejapi.ApiConfig.api_key = “你的api_key”
本次教學使用小資方案中的證券屬性表(TWN/EWNPRCSTD)、證券交易資料表(TWN/EWPRCD),若想更自由的使用資料的話可以參考 TEJ E shop🎁
接下來就可以透過TEJ API程式碼進行資料撈取,程式碼如下:
import datetime
TSMC = tejapi.get(
'TWN/EWPRCD', # 資料庫
coid = '2330', # 股票代碼
mdate={'gt':'2020-01-01'}, # 日期
paginate=True, # 單次取得資料限制最多10,000筆,增加 paginate=True,程式將自動分次取得資料
opts={'columns': ['mdate','open_d','high_d','low_d','close_d']},
# 挑選欄位
)
TSMC
資料撈取過程如下:
TSMC = tejapi.get(
'TWN/EWPRCD', # 資料庫
coid = '2330', # 股票代碼
mdate={'gt':'2020-01-01'}, # 日期
paginate=True, # 單次取得資料限制最多10,000筆,增加 paginate=True,程式將自動分次取得資料
opts={'columns': ['mdate','open_d','high_d','low_d','close_d']},
# 挑選欄位
)
# 連接資料庫
conn = sqlite3.connect('example.db')
# 存取
TSMC.to_sql(name='TSMC', con=conn, if_exists="replace", index=False)
# 關閉資料庫連線
conn.close()
執行完程式後,千萬要記得檢查資料庫 ❗️❗️
延續上面的步驟,並加入forloop的功能,將更新單一個股轉變為多股,每執行一次都會將結果直接存入資料庫 💪。詳細步驟如下:
import sqlite3
import datetime
import tejapi
stocks = tejapi.get('TWN/EWNPRCSTD',paginate=True)
# 上市所有普通股代碼
code = stocks[(stocks.market=='TSE')&(stocks.stypenm == '普通股')].coid.values
# 連接資料庫
conn = sqlite3.connect('example.db')
for stock in code:
stockname = 's'+stock
data = tejapi.get('TWN/EWPRCD',coid = stock,mdate = {'gt':datetime.datetime.now()-datetime.timedelta(days=1)}
,opts = {'columns':['mdate','open_adj','high_adj','low_adj','close_adj','volume']}
,paginate=True
,chinese_column_name=True
)
# 資料存入資料庫
data.to_sql(name = stockname, con = conn, if_exists='append', index=False)
conn.close()
這次分享給大家的是如何使用TEJ API進行資料撈取,並搭配windows內建排程工具,以達到資料庫自動更新的教學,我們在未來還會分享更多python的金融資料分析實作,如果有想知道的內容或感興趣主題可以在下方留言告訴我們 ❗️❗️
最後,如果喜歡本篇文章的內容請幫我們點擊下方圖示👏 ,給予我們更多支持與鼓勵,有任何的問題都歡迎在下方留言/來信,我們會盡快回覆大家👍👍
有任何使用上的問題都歡迎與我們聯繫:聯絡資訊
电子报订阅