VeighNa量化社区
你的开源社区量化交易平台
cilos's Avatar
Member
离线
6 帖子
声望: 0

23课时,在运行下面代码时出错:

import pandas as pd
trackers = engine.strategy.bar_trackers
df2 = pd.DataFrame.from_dict([t.__dict__ for t in trackers.values()])
df2

错误信息是:
Exception ignored in: 'pandas._libs.tslibs.conversion._localize_tso'
Traceback (most recent call last):
File "pandas_libs\tslibs\timezones.pyx", line 266, in pandas._libs.tslibs.timezones.get_dst_info
AttributeError: 'NoneType' object has no attribute 'total_seconds'

请大佬们指教这是什么问题,谢谢!

郭易燔 wrote:

使用python -m vnstudio启动veighna_studio,或者使用python run.py启动vntrader,看一下命令行输出,确定一下数据库使用的是否是mysql
现在有个疑惑的点是,代码的最后两句如果直接写成get_database().save_bar_data(bars),则数据还是去不到数据库,请问您知道为啥吗,分开写和合着写不一样吗?

郭易燔 wrote:

使用python -m vnstudio启动veighna_studio,或者使用python run.py启动vntrader,看一下命令行输出,确定一下数据库使用的是否是mysql
已经配置成了mysql,后来把import 改了一下,由get_database改成database,就可以了,代码改成了这样```
from vnpy.trader.database import database, DB_TZ
from vnpy.trader.object import BarData
from vnpy.trader.constant import Exchange, Interval
from datetime import datetime
from csv import DictReader

with open("IF888.csv") as f:
reader = DictReader(f)
bars = []
for row in reader:
dt = datetime.strptime(row["datetime"], "%Y-%m-%d %H:%M:%S")
bar = BarData(
symbol=row["symbol"],
exchange=Exchange(row["exchange"]),
datetime=DB_TZ.localize(dt),
interval=Interval.MINUTE,
open_price=float(row["open"]),
low_price=float(row["low"]),
high_price=float(row["high"]),
close_price=float(row["close"]),
volume=row["volume"],
open_interest=row["open_interest"],
gateway_name="DB"
)
bars.append(bar)
database_manager = get_database()
database_manager.save_bar_data(bars)
```

用CSV读取数据并写入数据库

from datetime import datetime
from csv import DictReader

with open("IF888.csv") as f:
reader = DictReader(f)
bars = []
for row in reader:
dt = datetime.strptime(row["datetime"], "%Y-%m-%d %H:%M:%S")
bar = BarData(
symbol=row["symbol"],
exchange=Exchange(row["exchange"]),
datetime=DB_TZ.localize(dt),
interval=Interval.MINUTE,
open_price=float(row["open"]),
low_price=float(row["low"]),
high_price=float(row["high"]),
close_price=float(row["close"]),
volume=row["volume"],
open_interest=row["open_interest"],
gateway_name="DB"
)
bars.append(bar)
database_manager = get_database()
database_manager.save_bar_data(bars)

求教,数据分析课程23讲,与SQL交互的代码中,将database_manager.save_bar_data(bars)改成get_database().save_bar_data(bars)后,返回值是True,但mysql数据库刷新后也找不到保存的表,请问是哪里出错啦,谢谢!

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】