0
我在Flask應用程序中使用SQLAlcemy將舊的MySQL數據庫遷移到新的MySQL數據庫,同時執行一些清理和此類途中。我不控制目標上的模式,因此我限制了他們令人沮喪的模式和聲明列名和關係的方式。因此SQLAlchemy兩個相同名稱的主鍵也是外國的
我的模型看起來:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class EntryTitle(Base):
__tablename__ = 'entry_title'
entry_id = Column('entry_id', Integer, primary_key=True)
title = Column('title', String(155))
class EntryData(Base):
__tablename__ = 'entry_data'
entry_id = Column('entry_id', Integer, primary_key=True)
body = Column('body', String(255))
我需要第二個涉及到第一,加入了對entry_id
列,我不確定要做到這一點的最好辦法。
對不起,這是我的錯,不使用我的代碼逐字。我實際上使用帶'declarative_base'的ORM。我已經調整了我的例子,但我猜可以假設'ForeignKey' /'primary_key'組合仍然可以工作嗎? – Wil 2013-03-17 10:28:17
是的,您正確使用'ForeignKey'。我也更新了我的答案。 – 2013-03-17 11:32:51
以及如何添加新的EntryData?我會知道舊的entry_id,但它不能在新版本中重新使用,因爲它是自動遞增的。我希望它會像 title = ChannelTitle({'title':'My title'}) data = ChannelData({'body':'My body',entry_id = title.entry_id}) db_session .add(title) db_session.add(data) db_session.commit() – Wil 2013-03-18 11:46:23