Запись вставки Sqlalchemy / Sqlite с автоинкрементным первичным ключом, приводящая к ошибке сбоя ограничения NULL - PullRequest
0 голосов
/ 10 июля 2019

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