Python 說明文件

2020-01-10 更新

Python使用設定

以下文件將說明如何使用TEJ Python API來存取TEJ 資料庫。

安裝方式

僅需要利用 pip 安裝 tejapi

pip install tejapi

認證方式

安裝完成後,需要在您的程式前面加上

import tejapi
tejapi.ApiConfig.api_key = "YOURAPIKEY"

全域參數

利用 tejapi.ApiConfig.ignoretz 參數決定時間欄位是否顯示時區(預設為False啟用),設定為 True則忽略時區

import tejapi
tejapi.ApiConfig.api_key = "YOURAPIKEY"
tejapi.ApiConfig.ignoretz = True

取得使用資訊

利用 tejapi.ApiConfig.info() 可取得各類使用資訊

import tejapi
tejapi.ApiConfig.api_key = "YOURAPIKEY"
info = tejapi.ApiConfig.info()

回應資訊說明

參數 詳細說明
key 您的APIKEY
startDate APIKEY開始使用日
endDate APIKEY結束日
reqDayLimit 每日呼叫次數上限
rowsDayLimit 每日資料筆數上限
rowsMonthLimit 每月資料筆數上限
todayReqCount 本日呼叫次數
todayRows 本日資料筆數
monthRows 本月資料筆數
user 使用者資訊
參數 詳細說明
userId 使用者編號
name 使用者名稱
shortName 使用者名稱
subscritionStartDate 訂閱開始日
subscritionEndDate 訂閱結束日
tables 可以使用的表格列表

查詢資料

以下將說明如何使用TEJ Python API查詢資料。

使用方式

以上市(櫃)未調整股價(日) TWN/APRCD為例,可直接使用 tejapi.get()方法取得,範例如下

data = tejapi.get('TWN/APRCD')

提示:

若沒有提供篩選條件,會取出所有資料,建議使用下段介紹的篩選方式,加入適當的篩選條件。

資料篩選

如果需要針對欄位篩選,例如僅須取得台灣加權股價指數(Y9999),請直接增加欄位篩選條件 coid='Y9999'

data = tejapi.get('TWN/APRCD',coid='Y9999')

或是同時取得兩種指數資料Y9999及Y9998,請利用序列條件 coid=['Y9999','Y9998']

data = tejapi.get('TWN/APRCD',coid=['Y9999','Y9998'])

單次取得資料限制最多10,000筆,您可以增加 paginate=True,程式將自動分次取得資料

data = tejapi.get('TWN/APRCD',coid='Y9999', paginate=True)

 

提示:

系統限制單次取得最大筆數為10,000筆,可使用 paginate=True 參數分次取得資料,但總筆數單次最多為1,000,000筆。請斟酌使用篩選條件降低筆數。

您可以針對多個欄位做篩選

data = tejapi.get('TWN/APRCD',coid='Y9999', mdate='2018-01-20' ,paginate=True)

欄位篩選

若僅需要取得單一欄位,請利用特殊參數 opts中的columns條件,例如僅須取得開盤價欄位(open_d)

data = tejapi.get('TWN/APRCD',opts={'columns':'open_d'})

或是多個欄位(mdate,open_d)

data = tejapi.get('TWN/APRCD',opts={'columns':['mdate','open_d']})

資料篩選運算

您可以針對資料欄位範圍篩選,例如交易日大於2018-01-01的資料

data = tejapi.get('TWN/APRCD',coid='Y9999', mdate={'gt':'2018-01-01'}, paginate=True)

您可以針對資料欄位範圍篩選,例如交易日大於2018-01-01且小於2018-02-01的資料

data = tejapi.get('TWN/APRCD',coid='Y9999', mdate={'gt':'2018-01-01','lt':'2018-02-01'}, paginate=True)

篩選運算 詳細說明 使用範例
= 指定欄位等於指定的文字或數值 coid='Y9999'
gt 指定欄位大於指定的數值 mdate={'gt':'2018-01-01'}
lt 指定欄位小於指定的數值 mdate={'lt':'2018-01-01'}
gte 指定欄位大於或等於指定的數值 mdate={'gte':'2018-01-01'}
lte 指定欄位小於或等於指定的數值 mdate={'lte':'2018-01-01'}
ne 指定欄位不等於指定的數值 mdate={'ne':'2018-01-01'}

查詢參數

參數 是否必要 詳細說明 使用範例
columns 指定需要取得的欄位,欄位名稱用逗號隔開 opts={'columns':['coid','mdate','val']}
per_page 指定每次取得的資料數量(上限為10000),總筆數不得超過1,000,000筆 opts={'per_page':100}
sort 指定排序的欄位及排序方式,採用 [欄位名稱].[排序方式]表示,排序方式有正向排序(asc)及反向排序(desc),預設為正向排序。 opts={'sort':'mdate.desc'}
pivot 轉置表格功能,可讓資料變成欄位。目前僅支援財務相關表格 opts={'pivot':True}

其他參數

參數 是否必要 詳細說明 使用範例
chinese_column_name 欄位以中文顯示 chinese_column_name=True

表格資訊

以下文件將說明如何取得表格資訊。

使用方法

import tejapi
tejapi.ApiConfig.api_key = "YOURAPIKEY"
table_info = tejapi.table_info('TWN/APRCD')

回應資訊說明

參數 詳細說明
dbCode 資料庫代碼
tableCode 資料表代碼
name 資料表名稱
description 資料表詳細說明
primaryKey 資料表主鍵列表
filters 資料表可篩選欄位
columns 資料表欄位說明
參數 詳細說明
name 欄位代碼
cname 欄位中文名稱
description 欄位說明
type 欄位資料格式
unit 單位
pivot 是否支援轉置
status 資料表狀態
參數 詳細說明
status 狀態
refreshed_at 最新資料時間

搜尋表格

以下文件將說明利用關鍵字搜尋表格。

使用方法

import tejapi
tejapi.ApiConfig.api_key = "YOURAPIKEY"
search = tejapi.search_table("關鍵字")

將回應陣列型態,表示多筆資料,每筆資料資訊如下

參數 詳細說明
matchType 匹配類別
  • TABLE_MATCH:關鍵字在表格名稱或說明中
  • COLUMN_MATCH:關鍵字在欄位名稱或說明中
  • TABLE_MATCH & COLUMN_MATCH:關鍵字在表格及欄位名稱或說明中
tableId 資料表代碼
tableName 資料表名稱
tableDesc 資料表詳細說明
columns 資料表欄位說明
參數 詳細說明
name 欄位代碼
cname 欄位中文名稱
description 欄位說明
type 欄位資料格式
unit 單位