Files
stock/tushare/src/job_ods_hs_daily_basic.py
T
2025-03-17 11:08:13 +08:00

83 lines
3.0 KiB
Python

import tushare as ts
import MySQLdb
import math
from config import CONFIG_DB
from config import CONFIG_TS
db = MySQLdb.connect(CONFIG_DB['host'], CONFIG_DB['user'], CONFIG_DB['password'], CONFIG_DB['database'], charset='utf8')
pro = ts.pro_api(CONFIG_TS['secret'])
def NanVal( val ):
if (val is None) :
return 0.0
if (math.isnan(val)):
return 0.0
return val
df = pro.daily_basic(**{
"ts_code": "",
"trade_date": 20230531,
"start_date": "",
"end_date": "",
"limit": "",
"offset": ""
}, fields=[
"ts_code",
"trade_date",
"close",
"turnover_rate",
"turnover_rate_f",
"volume_ratio",
"pe",
"pe_ttm",
"pb",
"ps",
"ps_ttm",
"dv_ratio",
"dv_ttm",
"total_share",
"float_share",
"free_share",
"total_mv",
"circ_mv",
"limit_status"
])
cursor = db.cursor()
for row in df.itertuples():
sql = "insert into t_ods_hs_daily_basic(ts_code, trade_date, close, turnover_rate, turnover_rate_f, volume_ratio, pe, \
pe_ttm, pb, ps, ps_ttm, dv_ratio, dv_ttm, total_share, float_share, free_share, total_mv, circ_mv, limit_status) \
values('%s', '%s', %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %d) \
on duplicate key update close=%f, turnover_rate=%f, turnover_rate_f=%f, volume_ratio=%f, pe=%f, pe_ttm=%f, pb=%f, \
ps=%f, ps_ttm=%f, dv_ratio=%f, dv_ttm=%f, total_share=%f, float_share=%f, free_share=%f, total_mv=%f, circ_mv=%f, \
limit_status=%d " % \
(getattr(row, 'ts_code'), getattr(row, 'trade_date'),
NanVal(getattr(row, 'close')), NanVal(getattr(row, 'turnover_rate')), NanVal(getattr(row, 'turnover_rate_f')),
NanVal(getattr(row, 'volume_ratio')), NanVal(getattr(row, 'pe')), NanVal(getattr(row, 'pe_ttm')), NanVal(getattr(row, 'pb')),
NanVal(getattr(row, 'ps')), NanVal(getattr(row, 'ps_ttm')), NanVal(getattr(row, 'dv_ratio')), NanVal(getattr(row, 'dv_ttm')),
NanVal(getattr(row, 'total_share')), NanVal(getattr(row, 'float_share')), NanVal(getattr(row, 'free_share')),
NanVal(getattr(row, 'total_mv')), NanVal(getattr(row, 'circ_mv')), NanVal(getattr(row, 'limit_status')),
NanVal(getattr(row, 'close')), NanVal(getattr(row, 'turnover_rate')), NanVal(getattr(row, 'turnover_rate_f')),
NanVal(getattr(row, 'volume_ratio')), NanVal(getattr(row, 'pe')), NanVal(getattr(row, 'pe_ttm')), NanVal(getattr(row, 'pb')),
NanVal(getattr(row, 'ps')), NanVal(getattr(row, 'ps_ttm')), NanVal(getattr(row, 'dv_ratio')), NanVal(getattr(row, 'dv_ttm')),
NanVal(getattr(row, 'total_share')), NanVal(getattr(row, 'float_share')), NanVal(getattr(row, 'free_share')),
NanVal(getattr(row, 'total_mv')), NanVal(getattr(row, 'circ_mv')), NanVal(getattr(row, 'limit_status'))
)
try:
cursor.execute(sql)
db.commit()
except Exception as ex:
print(sql)
print (ex)
db.rollback()
break
db.close()