Я создаю таблицу Database с данными о торговле и другими таблицами, которые в основном представляют собой имена ценных бумаг и их атрибуты.
Я пытаюсь захватить каждую сделку с уникальным TradeID, который я устанавливаю в качестве первичного ключа дляТаблица торговых данных.Я не уверен, правильно ли я его настраиваю, поскольку продолжаю сталкиваться с ошибкой условия 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