vnpy2.0.7 没有改动
使用下面的
`
from vnpy.trader.constant import Exchange, Interval #交易所,kline周期类型
from vnpy.trader.object import BarData #类名驼峰命名
from vnpy.trader.database import database_manager #对象小写,中间下划线
CHINA_TZ = pytz.timezone("Asia/Shanghai") #时区
with open("if_data.csv") as f:
reader = csv.DictReader(f)
bars = []
for d in reader:
dt = datetime.strptime(d["datetime"], "%Y-%m-%d %H:%M:%S")
dt = CHINA_TZ.localize(dt)#带上时区
bar = BarData(
symbol=d["symbol"],
exchange=Exchange(d["exchange"]),
interval=Interval.MINUTE,
datetime=dt,
open_price=d["open"],
high_price=d["high"],
low_price=d["low"],
close_price=d["close"],
volume=d["volume"],
open_interest=d["open_interest"],
gateway_name="DB"
)
bars.append(bar)#添加到列表
database_manager.save_bar_data(bars)
`
载入.csv文件时,发生下面的报错,请问如何解决?
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py",
line 2829, in execute_sql
cursor.execute(sql, params or ())
sqlite3.IntegrityError: NOT NULL constraint failed: dbbardata.turnover
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File ".\load_data_36.py", line 34, in <module>
database_manager.save_bar_data(bars)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\vnpy\trader\database\database_sql.py", line 373, in save_bar_data
self.class_bar.save_all(ds)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\vnpy\trader\database\database_sql.py", line 148, in save_all
DbBarData.insert_many(c).on_conflict_replace().execute()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 1698, in inner
return method(self, database, args, **kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 1769, in execute
return self._execute(database)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 2473, in _execute
return super(Insert, self)._execute(database)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 2236, in _execute
cursor = database.execute(self)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 2842, in execute
return self.execute_sql(sql, params, commit=commit)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 2836, in execute_sql
self.commit()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 2627, in exit
reraise(new_type, new_type(exc_args), traceback)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 178, in reraise
raise value.with_traceback(tb)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\peewee.py", line 2829, in execute_sql
cursor.execute(sql, params or ())
peewee.IntegrityError: NOT NULL constraint failed: dbbardata.turnover