83 lines
3.0 KiB
Python
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()
|
|
|
|
|
|
|