zipline ingest yahoo bundle, 报错-sqlite3.OperationalError unable to open databas

zipline是quantopion贡献的一个股票开源回测框架,我在windows 7环境尝试使用yahoo bundle时,报错
- sqlite3.OperationalError: unable to open database file
调查了原因,是由于源码中使用"working_file", 会占用sqlite3要使用文件的句柄,导致sqllite3无法使用所需文件,

```
adjustment_db_writer = SQLiteAdjustmentWriter(
stack.enter_context(working_file(
adjustment_db_path(name, timestr, environ=environ),
)).path,
BcolzDailyBarReader(daily_bars_path),
bundle.calendar,
overwrite=True,
)
```

working_file的功能是先创建临时文件供使用,并在__exit__时,如果未发生异常,则将临时文件最终移动到希望的位置,这样的好处是如果zipline ingest没有成功,则目标目录不会产生脏文件。

完美的处理此问题需要修改不少源码,现在zipline社区里已经有人动手在修改此bug,在修复前,临时的处理方法为,将源码修改为直接使用目标目录,

```
adjustment_db_writer = SQLiteAdjustmentWriter(
str(adjustment_db_path(name, timestr, environ=environ)),
BcolzDailyBarReader(daily_bars_path),
bundle.calendar,
overwrite=True,
)
```

另外,想要使用yahoo bundle,需要在目标目录的extension.py中增加如下代码,

```
from zipline.data.bundles import yahoo_equities, register, unregister

symbols = (
'AAPL',
'IBM',
'MSFT',
)
register('my_bundle', yahoo_equities(symbols))

```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值