我正在创建一个包含交易数据和其他表的表数据库,这些表主要是安全名称及其属性。
我试图捕获具有唯一TradeID的每笔交易,并将其设置为Trade Data表的主键。我不确定是否设置正确的方法,因为我一直遇到如下所示的NULL条件错误
class Security(Base):
__tablename__ = "Security_Table"
Bloomberg_Symbol = Column(String(20),primary_key=True,nullable=False)
class Daily_Security_Data(Base):
__tablename__ = "Daily_Security_Data_Table"
Bloomberg_Symbol=Column(String(20),ForeignKey('Security_Table.Bloomberg_Symbol'),primary_key=True)
Date = Column(Date,primary_key=True)
Daily_Rate=Column(Float)
Adv_20=Column(Integer) # ADV 20 Days as of that day
Adv_100=Column(Integer) # ADV 100 Days as of that day
Volume_On_Day=Column(Float)
class Trade_Daily_Data(Base):
__tablename__ = "Daily_Trades_Data_Table"
__table_args__ = {'sqlite_autoincrement': True}
Bloomberg_Symbol=Column(String(20),ForeignKey('Daily_Security_Data_Table.Bloomberg_Symbol'))
Date=Column(Date,ForeignKey('Daily_Security_Data_Table.Date'))
TradeID=Column(Integer,primary_key=True)
Model=Column(Integer)
Side=Column(String(20))
Qty=Column(Integer)
AvgPrice=Column(Float)
然后,我通过遍历交易数据文件来创建和添加交易对象。
trade_obj=Trade_Daily_Data(Bloomberg_Symbol="ABCD US Equity",Date='2018-12-04',Model=103,
Side='Short',Qty=800,AvgPrice=62.5)
但是我碰到了
IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: Daily_Trades_Data_Table.TradeID