数据库'finance'没有表'CCTV_NEWS'”不存在
请问下各位大佬们,使用新闻联播文本查询的时候提示 “database 'finance' has no table 'CCTV_NEWS' ” 不存在,请问是换了字段?还是不能查了呀,还是代码有问题...
df=finance.run_query(query(finance.CCTV_NEWS).filter(finance.CCTV_NEWS.day=='2019-02-19').limit(10))
print(df)
问题描述
解决方案
在 JoinQuant (聚宽) 平台上运行代码时,如果遇到 database 'finance' has no table 'CCTV_NEWS' 的报错,通常是因为该数据表已经被官方下线或移除了。
报错原因分析
- 数据源下线:聚宽平台会不定期对数据源进行调整。
CCTV_NEWS(新闻联播文本数据)可能因为版权、数据维护成本或使用率等原因,已经被官方从finance数据库中移除。 - 代码本身语法无误:您的查询代码
df=finance.run_query(query(finance.CCTV_NEWS).filter(finance.CCTV_NEWS.day=='2019-02-19').limit(10))在语法上是完全正确的 SQLAlchemy 查询格式。报错纯粹是因为底层数据库中找不到对应的表。
解决建议与替代方案
- 查阅最新数据字典:建议前往聚宽官网的「数据」->「数据字典」板块,查看当前
finance模块下支持的所有表。目前finance模块主要支持深沪港通、股东信息、公司概况、财务数据等。 - 寻找替代的新闻/舆情数据:
- 如果您需要宏观经济数据,可以使用
macro.run_query()查询宏观经济指标。 - 如果您需要特定公司的公告或新闻,可以查看聚宽是否提供了其他舆情因子或公告数据集(如聚宽因子库中的情绪因子)。
- 如果您需要宏观经济数据,可以使用
- 外部数据接入:如果您的策略强依赖新闻联播文本进行自然语言处理(NLP)或情感分析,建议通过外部 API(如 Tushare、各类新闻 API)获取数据,然后通过聚宽的
read_file或直接在研究环境中处理后,再应用到策略中。
正确使用 finance.run_query 的示例
为了验证您的 finance.run_query 功能正常,您可以尝试查询一个目前确实存在的表,例如查询深沪港通数据或股东信息:
from jqdata import *
# 查询恒瑞医药(600276.XSHG)的十大股东情况
q = query(finance.STK_SHAREHOLDER_TOP10).filter(
finance.STK_SHAREHOLDER_TOP10.code == '600276.XSHG',
finance.STK_SHAREHOLDER_TOP10.pub_date > '2015-01-01'
).limit(10)
df = finance.run_query(q)
print(df)
总之,这不是您的代码写错了,而是平台数据表发生了变动。建议调整策略的数据依赖,或向聚宽官方客服确认该数据是否转移到了其他模块(如 JQData 商业版)。