聚源数据库只能使用内部代码查询,所以直接用聚宽代码或证券代码,是无法查询的。所以想要以聚宽代码查询聚源数据库必须做如下的转换:
1、把聚宽代码先转换为证券代码,如指数聚宽代码000016.XSHG,转换后为000016,即去除代码后缀;
2、把证券代码转换为内部代码,如指数证券代码000016 转换后为 46。
第一步的转换很简单,就不赘述了,第二步的转换需要使用聚源的证券主表——SecuMain,贴出代码如下:
def to_InnerCode(codes,category=1):
df=pd.DataFrame()
offset=0
while True:
q=query(
jy.SecuMain.InnerCode,
).filter(
jy.SecuMain.SecuCode.in_(codes),
jy.SecuMain.SecuCategory==category
).offset(offset)
temp_df=jy.run_query(q)
if len(temp_df)==0:
break
df=df.append(temp_df)
offset =3000
return df.InnerCode.tolist()