У меня есть таблица, для которой я изменил движок MySQL с MyISAM на InnoDB. Это единственная таблица, которая была изменена, связанные с ней таблицы по-прежнему используют MyISAM.
class Signals(Base, sql_functions):
__tablename__ = 'Signals'
def __init__(self, message_id=None, clip_id=None, signal_id=None):
self.message_id = message_id
self.clip_id = clip_id
self.signal_id = signal_id
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
__mapper_args__= {'always_refresh': True}
id = Column(Integer(10), primary_key=True)
message_id = Column(Integer(10), ForeignKey('Messages.id'))
clip_id = Column(Integer(10), ForeignKey('Clips.id'))
signal_id = Column(Integer(10), ForeignKey('Signal_names.id'), primary_key=True)
sig_name = relationship("SignalNames", backref=backref('Signals', order_by=id), primaryjoin = 'Signals.signal_id == SignalNames.id', foreign_keys='SignalNames.id')
clips = relationship("Clips", backref=backref('Signals', order_by=id), primaryjoin='Signals.clip_id == Clips.id', foreign_keys='Clips.id')
messages = relationship("Messages", backref=backref('Signals', order_by=id), primaryjoin='Signals.message_id == Messages.id', foreign_keys='Messages.id')
def __repr__(self):
return "<Signals ('%s %s %s')>" % (self.message_id, self.clip_id)
Index('idx_msg_id', Signals.message_id)
Поскольку я изменил Engine на InnoDB, создаются внешние ключи, что нежелательно. Проблема в том, что SQLAlchemy использует определения внешнего ключа для определения соединения отношений.
Есть ли способ предотвратить создание внешних ключей или определить отношения без добавления внешних ключей?