VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 6
声望: 0

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

Member
avatar
加入于:
帖子: 6
声望: 0

用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)

Member
avatar
加入于:
帖子: 716
声望: 62

使用python -m vnstudio启动veighna_studio,或者使用python run.py启动vntrader,看一下命令行输出,确定一下数据库使用的是否是mysql

Member
avatar
加入于:
帖子: 6
声望: 0

郭易燔 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)
```

Member
avatar
加入于:
帖子: 6
声望: 0

郭易燔 wrote:

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

Member
avatar
加入于:
帖子: 1
声望: 0

https://mp.weixin.qq.com/s/iBYuD9vZ0GntKpRsT4Ky2A

Member
avatar
加入于:
帖子: 6
声望: 0

anakin wrote:

https://mp.weixin.qq.com/s/iBYuD9vZ0GntKpRsT4Ky2A
谢谢!

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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