Open kaybinwong opened 2 years ago
执行examples\data_runner\finance_runner.py 碰到下面这错误貌似跟这个有关,请问怎么解决?
2022-01-09 13:54:08,861 INFO MainThread Adding job tentatively -- it will be properly scheduled when the scheduler starts 2022-01-09 13:54:08,861 INFO MainThread record data: Stock, entity_provider: None, data_provider: eastmoney Stock registered recorders:{'joinquant': <class 'zvt.recorders.joinquant.meta.jq_stock_meta_recorder.JqChinaStockRecorder'>, 'exchange': <class 'zvt.recorders.exchange.exchange_stock_meta_recorder.ExchangeStockMetaRecorder'>, 'em': <class 'zvt.recorders.em.meta.em_stock_meta_recorder.EMStockRecorder'>, 'eastmoney': <class 'zvt.recorders.eastmoney.meta.eastmoney_stock_meta_recorder.EastmoneyStockRecorder'>} 2022-01-09 13:54:08,869 ERROR MainThread report error:(sqlite3.OperationalError) no such column: recoder_state.state_name [SQL: SELECT recoder_state.id AS recoder_state_id, recoder_state.entity_id AS recoder_state_entity_id, recoder_state.timestamp AS recoder_state_timestamp, recoder_state.state_name AS recoder_state_state_name, recoder_state.state AS recoder_state_state FROM recoder_state WHERE recoder_state.id = ?] [parameters: ('eastmoney_stock_recorder',)] (Background on this error at: http://sqlalche.me/e/14/e3q8) Traceback (most recent call last): File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1771, in _execute_context cursor, statement, parameters, context File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\engine\default.py", line 717, in do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: no such column: recoder_state.state_name
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\MyDocument\myprogram\python\zvt\examples\recorder_utils.py", line 29, in run_data_recorder
entity_ids=entity_ids, provider=data_provider, sleeping_time=sleeping_time, recorder_kv
File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\zvt\contract\schema.py", line 209, in record_data
r = recorder_class(kw)
File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\zvt\contract\recorder.py", line 53, in init
super().init()
File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\zvt\contract\base.py", line 44, in init
self.state_domain = self.state_schema.get_one(id=self.name)
File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\zvt\contract\schema.py", line 83, in get_one
return get_one(data_schema=cls, id=id, provider=provider)
File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\zvt\contract\api.py", line 234, in get_one
return session.query(data_schema).get(id)
File "
@awfssv 把$zvt-home/data目录里面的zvt_zvt_info.db删掉就好。
记录状态的结构(其实现在用不到)有些变化,我下个版本对目前的recorder去除掉这个依赖吧,省得已经在用的引起麻烦。
增加获取数据的API,类似record_data,用于拉取指定提供方的数据,而不落地到本地