zvtvz / zvt

modular quant framework.
https://zvt.readthedocs.io/en/latest/
MIT License
3.08k stars 843 forks source link

增加获取数据的API,类似record_data #188

Open kaybinwong opened 2 years ago

kaybinwong commented 2 years ago

增加获取数据的API,类似record_data,用于拉取指定提供方的数据,而不落地到本地

awfssv commented 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 "", line 2, in get File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\util\deprecations.py", line 390, in warned return fn(*args, **kwargs) File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\orm\query.py", line 942, in get return self._get_impl(ident, loading.load_on_pk_identity) File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\orm\query.py", line 954, in _get_impl execution_options=self._execution_options, File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\orm\session.py", line 2843, in _get_impl load_options=load_options, File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\orm\loading.py", line 535, in load_on_pk_identity bind_arguments=bind_arguments, File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\orm\session.py", line 1689, in execute result = conn._execute_20(statement, params or {}, execution_options) File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1582, in _execute_20 return meth(self, args_10style, kwargs_10style, execution_options) File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\sql\elements.py", line 324, in _execute_on_connection self, multiparams, params, execution_options File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1461, in _execute_clauseelement cache_hit=cache_hit, File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1814, in _execute_context e, statement, parameters, cursor, context File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1995, in _handle_dbapi_exception sqlalchemy_exception, with_traceback=excinfo[2], from=e File "D:\MyDocument\myprogram\python\zvt\venv\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_ raise exception 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) sqlalchemy.exc.OperationalError: (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)

foolcage commented 2 years ago

@awfssv 把$zvt-home/data目录里面的zvt_zvt_info.db删掉就好。

记录状态的结构(其实现在用不到)有些变化,我下个版本对目前的recorder去除掉这个依赖吧,省得已经在用的引起麻烦。